我希望编写一个小型的shell脚本,在命令提示符过长时缩短它。在bash中设置PS1变量是可以正常工作的。当我尝试在脚本中直接运行相同的命令时,却没有任何反应。
#!/bin/bash
PS1='\u:\W\$ '
我尝试过eval "PS1='\u:\W\$ '"
,export PS1='\u:\W\$ '
和exec PS1='\u:\W\$ '
,但都没有结果。
如何才能实现与bash中直接输入相同的结果?
谢谢您的帮助。
# in bash
source yourscript
# or in POSIX sh
. yourscript # mind the space!
yourscript.bash
用于 bash, yourscript.sh
用于任何 POSIX shell 可以被源化的脚本),而旨在执行而不是源化的脚本则不应具有扩展名。
/.profile或者/bashrc中吗? - emergo~/.bashrc
,而不是~/.profile
-- bashrc会为每个交互式shell执行,而profile仅适用于登录shell(除了某些试图为用户“简化”差异的操作系统外,但依赖这些操作系统是不好的),并且常规函数不会被子进程继承,因此(与环境变量不同,后者适用于~/.profile
)除非它们在~/.bashrc
中,否则您无法在需要它们的任何地方获得它们。 - Charles DuffyPROMPT_COMMAND
中调用你的函数,这样它就会自动被调用(如果它实际上正在检查终端宽度并决定使用哪个提示符)。 - Charles Duffy