当前位置: 首页>>技术教程>>正文


我在ubuntu找不到.bash_profile

, ,

问题描述

我在我的/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 -lsu - $USERsudo -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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2412.html,未经允许,请勿转载。