代码之家  ›  专栏  ›  技术社区  ›  Larry Gritz

shell脚本能否设置调用shell的环境变量?

  •  360
  • Larry Gritz  · 技术社区  · 16 年前

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

    setenv FOO foo
    

    在csh/tcsh中,或

    export FOO=foo
    

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

    我已经知道了

    source myscript
    

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

    但问题是:

    我希望这个脚本可以从bash或csh调用。换句话说,我希望任意一个shell的用户都能够运行我的脚本并更改他们的shell环境。所以“source”对我来说不起作用,因为运行csh的用户不能生成bash脚本,而运行bash的用户不能生成csh脚本。

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

    21 回复  |  直到 6 年前