0

我是 Unix 新手,我知道该export命令可用于创建会话变量,但以下命令的目的是什么:

bash-3.2$ export $TEST
declare -x PWD="/home/username"
declare -x SHELL="/bin/bash"
declare -x SSH_TTY="/dev/pts/4"
declare -x USER="username"

请帮助我理解这个命令。我没有任何名为 TEST 的变量,但是当我给出这个命令时,shell 打印了一些输出。

4

1 回答 1

2

shell 将不存在的变量扩展$TEST为一个空字符串,然后运行export不带参数的命令。当您这样做时,shell 会列出导出的环境变量。

如果您想导出一个空变量 TEST,您应该编写以下任何一种:

export TEST
export TEST=
export TEST=''
export TEST=""

(在这种情况下,还有其他方法可以达到相同的效果,例如export TEST=$TESTor,或多或少地,export TEST="$TEST",但通常缩写为export TEST。)

输出中的详细declare -x符号旨在允许您将输出写入文件,然后使用.(点)或source命令重新加载环境。不同的 shell 以不同的方式呈现输出,并且不一定可重用。

set命令类似(但更复杂)。它可用于设置 shell 选项、设置位置参数($1$2等),但是当不带参数运行时,它会列出设置的变量。请注意,并非创建的每个变量都是导出的环境变量。

于 2013-03-28T18:29:46.767 回答