应该使用哪些配置文件来设置 bash 环境变量?

pro*_*eek 10 bash path

当我问及答案了这里,并在这里,PATH变量取决于应用程序是如何被激活有不同的路径名。

  • 无论我如何使用 bash 启动软件,都应该使用哪些安装文件(.bashrc、.profile 等)来拥有相同的 PATH 变量?

Gil*_*il' 15

传统上,在 unix 系统上定义每个用户的环境变量的地方是~/.profile. 如果登录 shell 是与 Bourne 兼容的 shell,则该文件由登录 shell(即在您登录时启动的程序)读取。

Bash 是一个与 Bourne 兼容的 shell。当它作为登录 shell 被调用时,会读取~/.bash_profile此文件是否存在,~/.profile如果~/.bash_profile不存在。

根据经验,如果您以文本模式(例如,在文本控制台上或远程使用 ssh)键入密码,那么您获得的 shell 就是登录 shell。

但是,如果您在图形程序中输入密码并登录到图形环境,这将绕过正常的登录 shell。.profile在这种情况下是否读取取决于图形会话的设置方式;例如,它因 Linux 发行版、显示管理器和桌面环境而异。有时,链中的某个程序会显式调用登录 shell;有时其中一个程序显式读取~/.profile;有时这些~/.profile都不会发生,也不会被阅读。

举一个可变性的例子,据我快速浏览一下所涉及的脚本,在 Ubuntu 10.04 上:如果您使用 kdm 或 lxdm 登录,~/.bash_profile则读取它是否存在,~/.profile否则读取;如果你用gdm登录,~/.profile则只读;如果你用 xdm 登录,~/.profile是不会被读取的。

我所知道的所有系统都提供了一些设置每个用户环境变量的方法。不幸的是,没有普遍的答案。

请注意,有时您会看到在 中设置环境变量~/.bashrc或在 GUI 环境中的每个终端中启动登录 shell 的建议。两者都是坏主意;原因之一是您遇到的问题,即您的环境变量仅在通过终端启动的程序中可用,而在直接使用图标、菜单或键盘快捷键启动的程序中不可用。