似乎可以从 bash 脚本中导出环境变量

Posted

技术标签:

【中文标题】似乎可以从 bash 脚本中导出环境变量【英文标题】:can seem to export environment variable from bash script 【发布时间】:2012-10-26 02:06:58 【问题描述】:

我正在通过 putty 在远程服务器上工作,并试图通过类似这样的方式设置某些环境变量

#!/bin/bash
VAR="SOME VALUE"
export $VAR

当我退出脚本并在 $VAR 上运行 echo 时,我得到一个空行。你能建议一个解决这个问题的方法吗?

【问题讨论】:

【参考方案1】:

首先您需要导出 VAR,而不是 $VAR。

另外,我认为,你正试图从你的 shell 中执行脚本

./initVars.sh # or whatever is your script name...

你应该把它作为来源

source ./initVars.sh # OR
. ./initVars.sh # Note the leading '.' which serves as short-hand for source.

你可以把它放在你的 .bashrc 中。

【讨论】:

你能告诉我如何在 Windows 批处理文件中做同样的事情 对于批处理文件,我认为您可以简单地从父文件中调用 .bat 文件,如“initVars.bat”。确保它没有任何退出语句。另外,要设置一个var,你需要使用命令“set”,比如set VAR="SOME VALUE"【参考方案2】:

两个问题。首先,它只是export VAR。其次,$VAR 仅对您的脚本和子进程可用,而对父 shell 不可用。如果你想为那个 shell 设置 $VAR,你可以像 . ./yourscript.sh 这样从 shell 获取它。

【讨论】:

【参考方案3】:

应该是

export VAR

请注意缺少美元符号。

【讨论】:

你在运行 bash 吗?试试这个:echo $0 在命令提示符下。如果您没有看到bashsh,那么它将不起作用。 @HaiVu 由于 anishane 的回答中的原因,它不起作用。 export 是 POSIX,所以它也应该在 sh 中工作。

以上是关于似乎可以从 bash 脚本中导出环境变量的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Ant 'exec' 任务中导出环境变量?

如何在 Bash/Terminal 中导出多行环境变量,例如:RSA 私钥

我可以将变量从 Bash 脚本导出到环境而不使用它吗?

bash 环境配置及脚本

Bash 脚本从 setup.py 或 PKG-INFO 文件中获取版本并导出为环境变量

Bash编程013——环境变量