使用 .sh 文件设置环境变量

Som*_*kar 9 shell ubuntu environment-variables

我创建了 env.sh 文件,其内容如下

#!/bin/sh

export M2_HOME=/vagrant/tools/maven
export PATH=$PATH:$M2_HOME/bin
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_65
export ANT_HOME=/usr/local/apache-ant-1.9.7
export MAVEN_HOME=$M2_HOME
Run Code Online (Sandbox Code Playgroud)

但执行此 sh 文件不会导致导出 env 变量。必须手动执行每一行才能将它们导出。请帮忙

hee*_*ayl 16

您需要source( .) 文件,而不是执行:

. env.sh
Run Code Online (Sandbox Code Playgroud)

执行脚本时,它在子shell中运行,一旦(子)shell退出,导出的所有参数都将超出范围,不会影响父shell。

当您使用source它时,参数将在调用会话中可用。以及您正在处理的子进程export


请注意,shUbuntu的默认系统 shell ( ) 是dash, notbash并且作为交互式 shellgnome-terminal生成bash。在执行时,确保shebang 是正确的,并且是想要的。此外,在source-ing 时,不需要 shebang,您可以删除它。

  • 进一步澄清:`export` 使变量可用于导出它的 shell 的 *sub*processes(即子 shell、从该 shell 运行的命令等)。无法将变量推送到 shell 的 *parent* 进程。环境变量总是沿着流程树向下流动,永远不会向上流动。 (3认同)