bash忘记了导出变量

时间:2012-05-05 00:26:05

标签: bash variables export

我无法在脚本中最简单地导出变量,以便在我的bash中工作 - 我做错了什么?

文件 test.sh

#!/bin/bash
echo $ttt
ttt="fffalse"
export ttt
echo $ttt

bash测试:

hpek@hpek:~/temp$ export ttt="tttrue"
hpek@hpek:~/temp$ ./test.sh 
tttrue
fffalse
hpek@hpek:~/temp$ ./test.sh 
tttrue
fffalse
hpek@hpek:~/temp$ 

修改

我现在从答案中知道,这不起作用。 - 但如何在进程之间记住单个变量?我需要将其存储在文件中吗?

2 个答案:

答案 0 :(得分:3)

export适用于当前流程,之后会产生任何孩子;它不适用于流程边界(父母,现有子女,不相关的流程)。环境的行为类似于一种影子参数列表,而不像文件系统或邮箱。

答案 1 :(得分:3)

./test.shbash test.sh

相同

每个运行的shell脚本实际上是父shell的subprocess(子进程) 并且子进程无法将env-var导出到它的父级。


您可以尝试此操作(在相同的环境中运行):

. test.sh