问题描述
我在我的/home/user
目录中的Ubuntu 14.04中找不到.bash_profile
。我使用ls -a
命令查看.bash_profile
,但没有这样的文件。
最佳解决办法
Ubuntu使用~/.profile
。
您可以在Ubuntu中创建.bash_profile
,但不会读取.profile
。
如果我们阅读.profile内容:
cat ~/.profile
output
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
所以用~/.profile
代替~/.bash_profile
次佳解决办法
这意味着该文件不存在。但是,如果将bash
作为登录shell调用,则可以创建该文件并且bash
执行/获取文件。所以你需要通过shell登录(例如通过ssh
)。
如果您希望每次打开终端时都执行内容,则应修改.bashrc
文件。
第三种解决办法
当调用登录shell时,bash将按以下顺序查找其配置文件:
[0] ~/.bash_profile
[1] ~/.bash_login
[2] ~/.profile
找到第一个后,将停止寻找其他人,所以如果有我$HOME
的bash一个.bash_profile
不会找.bash_login
和.profile
了。
从这三个文件名中,Ubuntu默认使用.profile
,如果您愿意,可以将其重命名为.bash_profile
:
mv ~/.profile ~/.bash_profile
现在,如果我们使用bash -l
,su - $USER
,sudo -u $USER -i
或任何其他运行bash作为登录shell的命令打开一个新的bash shell,~/.bash_profile
将获得源代码。
重要提示:
到目前为止我所谈到的仅适用于Bash本身,当您从GUI登录系统时,显示管理器负责获取正确的文件。
Ubuntu使用gdm3
作为其显示管理器,如果我们看一下:/etc/gdm3/Xsession
我们可以看到除了以下内容之外没有任何文件来源:.profile
:
# First read /etc/profile and .profile
for file in /etc/profile "$HOME/.profile"; do
if [ -f "$file" ]; then
source_with_error_check "$file"
fi
done
因此,如果您使用GUI进行登录,请将文件保存在.profile
名称下,否则您可能会错过环境中的某些变量和设置。
我想更好的选择是为.profile
创建一个符号链接:
ln -s ~/.profile ~/.bash_profile
现在您的数据存在于.profile
中,gdm
不会遗漏任何内容,bash加载实际上是.profile
的.bash_profile
,并通过编辑它们得到相同的结果。
缺少.profile?
如果您没有.profile
,请从此处获取它的副本:
cp /etc/skel/.profile ~/.profile
要么
# Remember the note above
cp /etc/skel/.profile ~/.bash_profile