$ PATH变量的位置

时间:2017-12-12 06:36:21

标签: bash macos shell

我相信我在Mac OS X(10.12.3)上的bash unix shell中有一个损坏的文件。打开终端后,我无法访问bash。我唯一能做的就是运行%echo $ PATH,它返回:

/usr/local/share/npm/bin:/Users/greg/mongodb/bin:/Users/g

我可以使用

恢复对bash的访问权限
export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:$PATH

执行此操作并检查$ PATH变量后,我看到

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/share/npm/bin:/Users/greg/mongodb/bin:/Users/g

但是,如果我打开一个新的终端窗口,我刚刚添加的$ PATH信息都没有。

遵循此Stackoverflow post我正在查看应该设置这些变量的位置。

查看/ etc / paths我看到以下内容:

/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
/Users/greg/mongodb/bin 

/ etc / profile不存在

我的〜/ .bash_profile看起来像这样

export PATH=/usr/local/share/npm/bin:/Users/greg/mongodb/bin:/Users/g
reg/anaconda2/bin:/Applications/Postgres.app/Contents/Versions/latest
/bin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/usr/bin:/b
in:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/Library/Framewor
ks/Mono.framework/Versions/Current/Commands:/Applications/Visual
Studio Code.app/Contents/Resources/app/bin:

我的〜/ .profile看起来像这样

export NODE_PATH="/usr/local/lib/node"
export PATH="/usr/local/share/npm/bin:$PATH"
export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

一切看起来都不错。这是否表明bash正在使用另一个文件来设置环境变量,包括$ PATH info?如果是这样,它位于何处?为什么$ PATH变量不会改变我持续存在?

1 个答案:

答案 0 :(得分:0)

在任何.profiles中导出PATH时,必须包含$ PATH,否则将覆盖PATH。您不能在.profile的最后一次导出或.bash_profile中执行此操作。

此外,我会将NODE_PATH以及您的第一个export PATH...移至.bash_profile并删除该最终导出路径。

所以你的导出语句如下所示:

export PATH=/usr/local/share/npm/bin:...:$PATH
相关问题