我尝试通过.bashrc
在我的主目录中插入以下行来设置我的 shell 提示符:
export PS1="\[\e[01;36m\][\u]\[\e[0m\] \[\e[01;37m\]\W\[\e[0m\] $ "
我保存此文件并重新打开 bash,但它没有变化。当我发出命令时echo $PS1
,控制台显示
\h:\w$
这是默认提示。我环顾四周,除了上面显示的我插入的行之外,.bashrc
没有看到任何地方设置环境变量。PS1
这在我的本地机器上有效,但我的帐户在远程服务器上,它不会生效。如何使自定义提示生效?
谢谢!
答案1
这里的问题是登录 shell 和交互式 shell 之间的区别。请参阅这里以作总结。
~/.bashrc
仅在启动时读取交互的(非登录)shell。当您ssh
进入远程计算机时,您正在运行登录shell so~/.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\] $ "
或者,您可以~/.bashrc
从~/.bash_profile
或调用~/.profile
:
if [ "$BASH" ]; then
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
fi
if [ "$BASH" ]; then
使用时很有用,因为~/.profile
它将被非 bash shell 读取。