【发布时间】:2010-10-04 13:06:28
【问题描述】:
我正在尝试编写一个 shell 脚本,该脚本在运行时将设置一些环境变量,这些变量将保持在调用者的 shell 中。
setenv FOO foo
在 csh/tcsh 中,或
export FOO=foo
在 sh/bash 中只在脚本执行期间设置它。
我已经知道了
source myscript
将运行脚本的命令而不是启动新的 shell,这可能会导致设置“调用者”环境。
但问题来了:
我希望这个脚本可以从 bash 或 csh 调用。换句话说,我希望任一 shell 的用户都能够运行我的脚本并改变他们的 shell 环境。所以“source”对我不起作用,因为运行 csh 的用户无法获取 bash 脚本,而运行 bash 的用户无法获取 csh 脚本。
是否有任何合理的解决方案,无需在脚本上编写和维护两个版本?
【问题讨论】:
-
@eusoubrasileiro 不起作用(至少在 osx 上),因为 bash 将“export”解释为文件名。
-
在此线程中查看@Humberto Romero 的回答stackoverflow.com/a/28489593/881375
-
这个Q的标题应该改一下——主要区别是使用两个不同的shell,标题没有体现出来。
-
在此处为 Linux 和 Windows 提供答案:unix.stackexchange.com/questions/38205/…