我无法在脚本中最简单地导出变量,以便在我的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$
修改
我现在从答案中知道,这不起作用。 - 但如何在进程之间记住单个变量?我需要将其存储在文件中吗?
答案 0 :(得分:3)
export
适用于当前流程,之后会产生任何孩子;它不适用于流程边界(父母,现有子女,不相关的流程)。环境的行为类似于一种影子参数列表,而不像文件系统或邮箱。
答案 1 :(得分:3)
./test.sh
与bash test.sh
每个运行的shell脚本实际上是父shell的subprocess(子进程) 并且子进程无法将env-var导出到它的父级。
您可以尝试此操作(在相同的环境中运行):
. test.sh