<分区>
我有一个非常简化的 bash 脚本,它会 self 调用,但无法将导出的变量 id
保存到子脚本中:
1 #! /bin/bash
2
3 SCRIPT="$(realpath "${0}")"
4
5 echo "start script"
6 echo "euid= $EUID"
7
8 if [ $EUID != 0 ]; then
9
10 export id=$EUID
11 sudo ${SCRIPT}
12 exit 0
13 fi
14
15 echo "HERE WE ARE ROOT"
16 echo "euid= $EUID"
17 echo "id= $id"
18
19 exit 0
输出是:
start script
euid= 1000
start script
euid= 0
HERE WE ARE ROOT
euid= 0
id=
普通用户的 EUID
是 1000,我想做的是将这个 EUID
保留在以 root 身份运行的子进程中。
id
在子脚本中未绑定(bind)。
所以我用交互式 shell 做了一个简单的测试:
$ export var=1
$ /bin/bash
$ echo $var
1
$ var=2
$ echo $var
2
$ exit
$ echo $var
1
和 var
在这里正确导出,但在其他情况下不正确,有什么区别?
我想我遗漏了一些明显的东西,因为我对 shell 脚本编写经验还很缺乏。
谢谢。