我试图通过.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 读取。