终端打开时未执行 ~/.profile?

终端打开时未执行 ~/.profile?

不知何故我的 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

...并开始新的会话以检查一切是否恢复正常

相关内容