似乎可以从 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
在命令提示符下。如果您没有看到bash
或sh
,那么它将不起作用。
@HaiVu 由于 anishane 的回答中的原因,它不起作用。 export
是 POSIX,所以它也应该在 sh 中工作。以上是关于似乎可以从 bash 脚本中导出环境变量的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Bash/Terminal 中导出多行环境变量,例如:RSA 私钥