我试图通过.bashrc在我的主目录中插入以下行来设置我的 shell 提示:
export PS1="\[\e[01;36m\][\u]\[\e[0m\] \[\e[01;37m\]\W\[\e[0m\] $ "
Run Code Online (Sandbox Code Playgroud)
我保存了这个文件并重新打开 bash,但它没有改变。当我发出命令时echo $PS1,控制台显示
\h:\w$
Run Code Online (Sandbox Code Playgroud)
这是默认提示。我环顾四周.bashrc,PS1除了上面显示的我插入的行之外,没有看到在任何地方设置了环境变量。
这适用于我的本地机器,但我在远程服务器上的帐户不会坚持。如何使自定义提示生效?
谢谢!
这里的问题是登录 shell 和交互式 shell 之间的区别。请参阅此处了解摘要。
~/.bashrc仅在启动交互式(非登录)shell时读取。当您ssh进入远程计算机时,您正在运行登录shell,因此将读取~/.bash_profile或~/.bash_login或~/.profile(按该顺序)。bash您可以通过登录远程服务器后运行来检查这一点,这将启动一个交互式 shell,~/.bashrc将被读取并显示您修改的提示符。
要更改出现的提示ssh,请$PS1设置~/.bash_profile:
export PS1="\[\e[01;36m\][\u]\[\e[0m\] \[\e[01;37m\]\W\[\e[0m\] $ "
Run Code Online (Sandbox Code Playgroud)
或者,您可以~/.bashrc从~/.bash_profile或致电~/.profile:
if [ "$BASH" ]; then
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
fi
Run Code Online (Sandbox Code Playgroud)
if [ "$BASH" ]; then使用时很有用,~/.profile因为它将被非 bash shell 读取。