【问题标题】:set environment variables with c-shell script使用 c-shell 脚本设置环境变量
【发布时间】:2014-12-21 16:40:09
【问题描述】:

我想用脚本设置一些环境变量。 我做了类似的事情:

#!/bin/csh -f

setenv A "Hello"
setenv B "World"
source BlaBla

脚本名称例如“my_script”

所以当我运行时:.my_script.

没有错误,但如果我尝试像这样在 shell 中使用这些环境变量:

echo $A

我得到“A:未定义的变量”。

我能做些什么来解决这个问题?

谢谢。

【问题讨论】:

    标签: shell environment-variables


    【解决方案1】:

    您是否尝试使用BlaBla 或运行my_script 的shell 中的变量?

    它们应该在BlaBla 脚本的上下文中可用。

    如果您希望它们在调用 shell 中可用,那么您需要 source my_script 而不是 /path/to/my_script,后者在无法在调用 shell 中设置 shell 变量的新 shell 中运行 my_script

    【讨论】:

    • 所以没有办法用脚本设置shell变量?每个脚本都必须在新的 shell 上运行?
    • 一个进程不能改变它的调用者环境,每个脚本都在它自己的子shell中运行。
    • @DavidC.Rankin 如果您 source 脚​​本,则不会,如答案中所述。
    • @David,非常正确,但在这种情况下,您没有“呼叫者”:)
    • @DavidC.Rankin 我指的是第二句话,“每个脚本都在自己的子外壳中运行”。我发现它在第一条评论中的问题有点误导。获取源后,脚本会在当前 shell 中运行,因此您可以使用 shell 脚本设置变量。 /etc/profile.d中的脚本就是这样设置登录环境的……
    猜你喜欢
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 2015-03-02
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 2020-04-05
    相关资源
    最近更新 更多