终端窗口标题修改限制及脚本中PS1设置无效的原因咨询
终端窗口标题修改限制及脚本中PS1设置无效的原因咨询
兄弟,你踩了bash新手最容易碰到的一个小坑——子shell的环境隔离问题,这就是为啥脚本里改PS1没用的核心原因:
- 当你直接在终端里敲
PS1='...'时,这个修改是直接作用在当前终端对应的shell进程里的,所以能立刻看到标题变化; - 但把这段代码放进脚本执行时,系统会启动一个全新的子shell来跑脚本,你改的
PS1只是这个子shell的提示符设置。等脚本跑完,子shell直接退出,父shell(你正在用的终端窗口)的环境变量完全不受影响,自然看不到标题变化。
给你两个实用的解决办法:
用source命令加载脚本
别直接运行脚本,而是用source(或者缩写.)让脚本在当前shell环境里执行,比如你的脚本名叫set_title.sh,就运行:source set_title.sh # 或者更简洁的写法 . set_title.sh这样脚本里的
PS1设置就会直接作用在当前终端的shell中,标题就能正常修改了。永久生效的话,把设置加到bash配置文件
要是你希望每次打开终端都用这个标题格式,直接把PS1='...'这行代码加到~/.bashrc(部分系统用~/.bash_profile)文件末尾,保存后执行source ~/.bashrc就能立刻生效,以后新开终端也会自动应用这个设置。
另外补个临时改标题的小技巧:不用改PS1,直接执行这条命令就能立刻改标题,更简洁:
echo -ne "\033]0;你的自定义标题\007"
备注:内容来源于stack exchange,提问作者Paul Eden
相关产品推荐
相关产品推荐

