我有一个程序,我在其/ opt目录中称之为exampleProg,我想从任何目录运行它,而不仅仅是:
/opt/radFolder/exampleProg
这个应该是一个简单的任务,我以前在不同的计算机上做了好几次。我四处搜索,发现了以下说明:
使用PATH="$HOME/bin:$PATH:/opt/radFolder/:"
或只添加/opt/radFolder
位。
然而,它们似乎都不起作用。我遇到的问题是似乎没有一个似乎没有普遍认可的解决方案。我已经尝试了很多,我认为我的一个改变阻止了适当的改变。有人会帮助我一劳永逸地休息吗?非常感谢提前。
我正在运行ubuntu 14.04 LTS x64。
答案 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
中具有系统范围的相关性)。