小编典典

shell脚本可以设置调用shell的环境变量吗?

all

社区上个月审查了是否重新打开此问题并将其关闭:

原始关闭原因未解决

我正在尝试编写一个 shell 脚本,该脚本在运行时将设置一些环境变量,这些变量将保持在调用者的 shell 中。

setenv FOO foo

在 csh/tcsh 中,或

export FOO=foo

在 sh/bash 中仅在脚本执行期间设置它。

我已经知道了

source myscript

将运行脚本的命令而不是启动新的 shell,这可能会导致设置“调用者”环境。

但问题是:

我希望这个脚本可以从 bash 或 csh 调用。换句话说,我希望任一 shell 的用户都能够运行我的脚本并改变他们的 shell
环境。所以’source’对我不起作用,因为运行 csh 的用户无法获取 bash 脚本,而运行 bash 的用户无法获取 csh 脚本。

有没有不需要在脚本上编写和维护两个版本的合理解决方案?


阅读 198

收藏
2022-03-11

共1个答案

小编典典

您的 shell 进程拥有父进程环境的副本,并且无法访问父进程的环境。当您的 shell 进程终止时,您对其环境所做的任何更改都会丢失。获取脚本文件是配置
shell 环境最常用的方法,您可能只想硬着头皮为两种 shell 中的每一种维护一个。

2022-03-11