`VAR=...` 和 `export VAR=...` 有什么区别?

Pom*_*rio 13 bash environment-variables

做的有什么区别

$ MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=384m"
Run Code Online (Sandbox Code Playgroud)

$ export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=384m"
Run Code Online (Sandbox Code Playgroud)

在 SSH 连接中执行这两种操作是否有任何副作用?

Rin*_*ind 12

第一个将值设置为变量。例如你可以做

echo $MAVEN_OPTS
Run Code Online (Sandbox Code Playgroud)

并让它返回值,但如果你在外壳之外发出它,你将返回一个空字符串。

进来了export

导出是对外壳的指令。它告诉 shell 使这个环境变量可用于其他程序。如果没有导出,它们只能在 shell 本身中使用。

如果您希望变量永久可用,则 ssh 读取~/.ssh/environmentssh2读取/etc/environment~/.ssh2/environment,并将 VARNAME=value 格式的行添加到环境中。从ssh手册页


Lek*_*eyn 8

MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=384m"
Run Code Online (Sandbox Code Playgroud)

设置一个名为 的 shell 变量MAVEN_OPTS。它可能后跟一个export MAVEN_OPTS命令,使该变量可用作子程序的环境变量,或者像这样使用它的 shell 命令java $MAVEN_OPTS ...

export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=384m"
Run Code Online (Sandbox Code Playgroud)

设置一个名为 的环境变量MAVEN_OPTS。此环境变量也可用于子程序。

除了针对maven(构建系统 iirc)调整了一些 java 内存限制之外,没有任何副作用。