无法将文件和目录添加到PATH

时间:2014-07-20 17:52:34

标签: linux bash unix path terminal

我有一个程序,我在其/ opt目录中称之为exampleProg,我想从任何目录运行它,而不仅仅是:

/opt/radFolder/exampleProg

这个应该是一个简单的任务,我以前在不同的计算机上做了好几次。我四处搜索,发现了以下说明:

  • 编辑.bash
  • 编辑.bashrc
  • 编辑.profile(另一个stackoverflow回答说,虽然这个有效,但它不再起作用了。)
  • 编辑/ etc / environment /

使用PATH="$HOME/bin:$PATH:/opt/radFolder/:"或只添加/opt/radFolder位。

然而,它们似乎都不起作用。我遇到的问题是似乎没有一个似乎没有普遍认可的解决方案。我已经尝试了很多,我认为我的一个改变阻止了适当的改变。有人会帮助我一劳永逸地休息吗?非常感谢提前。

我正在运行ubuntu 14.04 LTS x64。

1 个答案:

答案 0 :(得分:1)

首先,要明白将内容写入这些文件并不意味着一切都是即时的,而且是全局性的。实际上,在文件来源(通过.source)之前不会更改任何内容,即使这样,环境更改也仅适用于当前shell(以及后续创建的子项,如果{{1}使用)。

靠近export顶部的

INVOCATION ,说明了哪些文件会自动获取。总结一下:

  • man bash用于新的非登录交互式shell,例如,当您打开GUI终端时。在许多系统上,此文件默认依次来源~/.bashrc

  • /etc/bashrc/etc/profile~/.bash_profile由互动登录 shell读取。

添加到~/.profile应该是有效的,但它只适用于随后调用的,交互式的非登录shell(以及它们的子节点,如果导出~/.bashrc)。但是,由于它很容易被重复采购,因此使用它来添加到现有变量(与$PATH一样)可以产生重复的连接(see here)。

第二类$PATH的一个问题是,如果您使用GUI登录,显示管理器可能不会提供它,但它会让您登录,这意味着,您永远不会调用登录shell,因此没有任何一个来源。如果是这种情况,则从.profile采购它们应该有效(这在~/.xsession中具有系统范围的相关性)。