你可以无限次地将其导出,这不会有任何区别(显然第一次导出后)。
在这种情况下,
export
所做的所有事情(除了由于
=
而更改变量本身之外)都是将变量标记为将被导出到未来命令的环境中。
你可以将其标记多次。这两个命令的效果:
export PATH="/usr/local/heroku/bin:$PATH"
export PATH=$PATH:/opt/AWS-ElasticBeanstalk-CLI-2.6.0/eb/linux/python3/
将把PATH
标记为导出变量(由于通常希望路径被继承,因此它可能已经是这样了),并将其设置为:
将会标记PATH
为导出变量(因为通常情况下您希望您的路径被继承),并将其设置为:
(Note: The original Chinese text contains two slightly different versions of the same sentence. The above translations correspond to the second version, which has a typo corrected ("您" instead of "你").)
/usr/local/heroku/bin:$PATH:/opt/AWS-ElasticBeanstalk-CLI-2.6.0/eb/linux/python3/
$PATH
是在执行这些命令之前的路径。
唯一需要注意的是顺序。例如,如果/usr/local/heroku/bin
包含一个名为ls
的可执行程序,那么如果您尝试获取目录列表,这可能会让您的生活变得困难。出于这个原因,我倾向于将目录添加到路径的末尾。
或者,您可以提供一个别名或函数,仅针对当前会话将您的路径更改为Heroku首选路径,以使顺序不那么永久。
请记住,由bash
运行的文件是一个复杂的问题。.bashrc
用于交互式、非登录shell,因此可能不会在所有情况下运行(我自己通过在.bash_profile
的末尾调用.bashrc
来解决这个问题,但有些人可能会感到不适)。
在.bash_profile
中设置(并导出)路径可能更好。
而且,如果您正在做的事情有问题(您的语法似乎没问题,但由于缺乏信息,可能会有其他问题),您应执行以下步骤:
- 在每个
export
命令之前和之后运行echo $PATH
,查看是否有任何问题。
- 确保路径中的每个组件实际上都存在(即您在其中拥有正确的目录)。
.bashrc
通常不是更新 PATH 的正确位置 - 当其他 shell 启动它并在父进程已经运行后调用它时,会添加多个条目。环境更新通常应放在.bash_profile
中,这样它们只会在每次登录时运行一次。 - Charles DuffyPATH
,这样我们才能知道你为什么认为有问题。 - Charles Duffy