发生了什么

发生了什么

我试图让 bash 脚本创建一个变量,并让该变量保留在终端中,直到终端关闭(不是永久关闭)。我以为export这就是我所需要的,但它不起作用。

#!/bin/bash

export VARIABLE='this is a test'

然后运行脚本:

$ ./test.sh

然后在同一个终端中:

$ echo "$VARIABLE"

但它会产生空白响应。

答案1

发生了什么

您启动一个新进程,设置环境变量(在进程中),然后退出该进程。变量消失了。

该怎么办

获取 bash 脚本,但不要执行它。例如其中之一

source ./test.sh 
. ./test.sh

答案2

当您运行脚本时,您将创建设置变量的子 shell。脚本执行结束后,变量将被销毁。如果您想在当前 shell 中使用它,请按以下方式执行脚本:

. ./test.sh

答案3

除了source(或.) 之外,您可能还需要使用 shell 函数。

尝试一下这个:

test_sh() {
  export VARIABLE='this is a test'
  ...
}

测试:

printf "VARIABLE=%s\n" "${VARIABLE}"
VARIABLE=

test_sh
printf "VARIABLE=%s\n" "${VARIABLE}
VARIABLE=this is a test

相关内容