我相信我在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变量不会改变我持续存在?
答案 0 :(得分:0)
在任何.profiles中导出PATH时,必须包含$ PATH,否则将覆盖PATH。您不能在.profile的最后一次导出或.bash_profile中执行此操作。
此外,我会将NODE_PATH
以及您的第一个export PATH...
移至.bash_profile
并删除该最终导出路径。
所以你的导出语句如下所示:
export PATH=/usr/local/share/npm/bin:...:$PATH