在我的.profile
文件中我有这样一行:
# source bashrc if it exists
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
确保我的.bashrc
文件存在(如果存在)。我还有一个在新机器上运行的设置脚本,用于设置由于某种原因而表现不同的环境。
在设置脚本的末尾我有:
# read .profile
source "$USERDIR/.profile"
其中$USERDIR
指向我的主目录。我知道.profile
当这个脚本执行时它的来源是正确的,因为我回显“.profile sourced”,并且在脚本完成时打印它。
但是,.bashrc
不会从中读取.profile
(当.profile
源自此安装文件时)。我不明白为什么,因为只需输入source .profile
即可bash
正常工作。
我知道.bashrc
它没有运行,因为我的 rc 文件中的 echo 行仅在我.profile
直接获取而不是从此设置脚本中获取时才会回显。.bashrc
当我尝试获取脚本时,该脚本确实存在(因此if [ -f ~/.bashrc ]
应该执行),因为它是与 .profile 同时创建的。
答案1
一步一步来。将其添加到.profile
# source bashrc if it exists
if [ -f ~/.bashrc ]; then
echo ".profile is sourcing " ~/.bashrc
source ~/.bashrc
fi
然后调用 bash 作为登录:bash -l
应该足够了。
.profile is sourcing /home/user/.bashrc
是否打印了以下行: ?
如果是这样,问题可能出在:
- 这些文件是否存在:~/.bash_profile、~/.bash_login
- 是否使用该选项调用 bash
--noprofile
? - 或使用您的设置脚本。
如果不是,则问题出在.profile
and 或 上.bashrc
。
- 也许您应该使用 $HOME 而不是 ~ 作为用户目录。
也许你的 bashrc 有一行可以防止在非交互时执行:
# If not running interactively, don't do anything [ -z "$PS1" ] && return
答案2
其中
$USERDIR
指向我的主目录。
到底指向哪里$HOME
?在 bash 中,~
总是扩展到任意$HOME
点。如果source ~/.profile
因为$HOME
设置不正确而不能,那么您$USERDIR/.profile
将无法source ~/.bashrc
。