为什么“bash”和“source”命令的行为不同?

为什么“bash”和“source”命令的行为不同?

我使用的是 Mac OS 10.8。我/sw/fink/bin/init.sh使用命令运行了脚本bash,该命令应该使文件夹成为当前会话变量fink/bin的一部分。$PATH

fink 命令不起作用,因此我使用.被告知与该命令等效的命令再次运行脚本source;我现在能够在没有绝对路径的情况下调用 fink。

为什么.有效而 无效bash?是不是因为shbash命令使用它们自己的临时$PATH变量运行?

答案1

bash somescript将启动一个新bashshell,评估您的脚本,然后退出。脚本将看到您当前环境的副本,但脚本结束时所有更改都将被丢弃。

. somescript或者source somescript将在您当前上下文中评估脚本,因此对现有环境变量的更改或新变量的设置将被保留。

相关内容