![终端打开时未执行 ~/.profile?](https://linux22.com/image/1289142/%E7%BB%88%E7%AB%AF%E6%89%93%E5%BC%80%E6%97%B6%E6%9C%AA%E6%89%A7%E8%A1%8C%20~%2F.profile%EF%BC%9F.png)
不知何故我的 bash 提示符被改为“elementary:~ steven$”,我想将其改回默认提示符。我首先将以下内容添加到 ~/.bashrc,然后添加到 ~/.profile:
export PS1="\s-\v\$ "
当我打开终端时,这两个命令都没有执行。如果我在任一文件上运行该命令,source
则该命令在该会话的剩余时间内运行良好。
我在这里忽略了什么吗?
编辑:这是 Ian 建议的输出:
elementary:~ steven$ bash --login --verbose
# System-wide .profile for sh(1)
if [ -x /usr/libexec/path_helper ]; then
eval `/usr/libexec/path_helper -s`
fi
/usr/libexec/path_helper -s
PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/Library/Frameworks/Python.framework/Versions/3.2/bin:/usr/local/AVRMacPack/bin"; export PATH;
if [ "${BASH-no}" != "no" ]; then
[ -r /etc/bashrc ] && . /etc/bashrc
fi
# System-wide .bashrc file for interactive bash(1) shells.
if [ -z "$PS1" ]; then
return
fi
PS1='\h:\W \u\$ '
# Make bash check its window size after a process completes
shopt -s checkwinsize
if [ -e "/usr/local/AVRMacPack" ]; then
PATH="$PATH:/usr/local/AVRMacPack/bin"
export PATH
fi
# Setting PATH for Python 3.2
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.2/bin:${PATH}"
export PATH
elementary:~ steven$ which bash
which bash
/bin/bash
答案1
.bashrc
根据 bash 手册页,仅在非交互式 shell 中执行。
.bash_profile
针对登录 shell 执行。
该.profile
文件由 Korn shell 加载。我不知道 bash 是否注意到了这一点。我在 bash 手册页中找不到对此的任何引用。
在 OS X 上,Terminal.app 程序会为您打开的每个新的 Terminal.app 窗口运行一个登录 shell。
因此,您想将您的提示设置放入其中.bash_profile
。
您始终可以在 中执行以下操作.bash_profile
。这并不罕见,但我说不出它会产生什么样的影响:
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
那么您不必维护两个文件。
答案2
我可能错了,但是如果 bash 是你的 shell,你必须将其放在你的 ~/.bash_profile 中而不是你的 .bashrc 中。
答案3
如果你弄乱了你的bash 控制无论出于什么原因,如果你想加载你的终端。轮廓在每个会话中再次写下你的的〜/ .bash_profile像这样:
if [ -f ~/.profile ]; then
source ~/.profile
fi
...并开始新的会话以检查一切是否恢复正常