我不知道';我看不出导出在BASH中有什么不同
在我的.bash_配置文件中,我在$path中添加了一个新路径并将其导出,以便能够在该目录中运行脚本 然而,当我删除“导出”一词,重新打开终端并启动新的shell时,我仍然能够运行这些脚本 我确实理解导出使变量对子流程可见,但正如您所看到的,在这里它并没有真正的区别 有人能给我解释一下原因吗?我不知道';我看不出导出在BASH中有什么不同,bash,terminal,Bash,Terminal,在我的.bash_配置文件中,我在$path中添加了一个新路径并将其导出,以便能够在该目录中运行脚本 然而,当我删除“导出”一词,重新打开终端并启动新的shell时,我仍然能够运行这些脚本 我确实理解导出使变量对子流程可见,但正如您所看到的,在这里它并没有真正的区别 有人能给我解释一下原因吗? 提前感谢。。bash\u profile已在shell中提供。因此,不需要导出变量以在shell中使用。但是,如果您运行使用exec*p*(3)的非shell(例如C或Python)程序,则它们将无法访问
提前感谢。
。bash\u profile
已在shell中提供。因此,不需要导出变量以在shell中使用。但是,如果您运行使用exec*p*(3)
的非shell(例如C或Python)程序,则它们将无法访问$PATH的新值,并且可能会失败。是否检查了新shell中的路径?是的,我有。添加的路径就在那里,这让我很困惑。bash_配置文件将在登录shell上运行(来源于)。bashrc适用于每个新shell。很可能需要重新启动以消除旧的bash_配置文件效果。使用.bashrc代替。哦,好的。Mac终端是否总是这样做(source.bash_profile进入新shell)?不是终端会这样做,而是每个新启动的shell(终端通常启动一个shell在其中运行)。请查看bash
手册页中的“调用”一章,以了解在何种情况下使用了哪些文件。可能还需要指出的是,PATH
很可能比用户自己的.bashrc
或.bash\u profile
更早导出,因此,仅仅从用户文件中删除export
关键字并不是一个有效的实验export-nPath
将强制它不被报告,因此这将是一种更好的方式来证明差异。第一个文件bash
源是/etc/profile
,它在Mac上对/usr/libexec/PATH\u helper
的输出运行调用eval
,它根据/etc/paths.d/
的内容输出有效代码以设置路径
,并导出路径
。