为什么在 .bashrc 中设置提示实际上不会影响提示?

为什么在 .bashrc 中设置提示实际上不会影响提示?

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

相关内容