【发布时间】:2018-05-27 17:28:48
【问题描述】:
我有这个非常简化的 bash 脚本,它会调用自己并且无法将导出的变量 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 在子脚本中未绑定。
所以我用交互式外壳做了一个简单的测试:
$ export var=1
$ /bin/bash
$ echo $var
1
$ var=2
$ echo $var
2
$ exit
$ echo $var
1
和var在这里是正确导出的,但在其他情况下不是,有什么区别?
我想我缺少一些明显的东西,因为我在 shell 脚本方面非常缺乏经验。
谢谢。
【问题讨论】: