Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我不知道';我看不出导出在BASH中有什么不同_Bash_Terminal - Fatal编程技术网

我不知道';我看不出导出在BASH中有什么不同

我不知道';我看不出导出在BASH中有什么不同,bash,terminal,Bash,Terminal,在我的.bash_配置文件中,我在$path中添加了一个新路径并将其导出,以便能够在该目录中运行脚本 然而,当我删除“导出”一词,重新打开终端并启动新的shell时,我仍然能够运行这些脚本 我确实理解导出使变量对子流程可见,但正如您所看到的,在这里它并没有真正的区别 有人能给我解释一下原因吗? 提前感谢。。bash\u profile已在shell中提供。因此,不需要导出变量以在shell中使用。但是,如果您运行使用exec*p*(3)的非shell(例如C或Python)程序,则它们将无法访问

在我的.bash_配置文件中,我在$path中添加了一个新路径并将其导出,以便能够在该目录中运行脚本

然而,当我删除“导出”一词,重新打开终端并启动新的shell时,我仍然能够运行这些脚本

我确实理解导出使变量对子流程可见,但正如您所看到的,在这里它并没有真正的区别

有人能给我解释一下原因吗?
提前感谢。

。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/
的内容输出有效代码以设置
路径
,并导出
路径