gpt4 book ai didi

linux - 变量没有被回显

转载 作者:太空狗 更新时间:2023-10-29 11:35:02 27 4
gpt4 key购买 nike

当我在 Bash 3.2.48 中运行以下脚本时:

#!/bin/bash

export var1='var1'
echo "UID=$UID"

if [ x"$UID" != x"0" ]
then
export var2='var2'
while ! { sudo -v; }; do { sudo -v; }; done;
sudo $0
exit
fi

echo $var1
echo $var2

exit 0

我得到的输出是:

UID=1000
UID=0
var1

为什么 var2 没有导出和回显?我很确定相同的脚本适用于较旧的 Bash 版本。

最佳答案

  • 你第一次输入 UID == 1000,你输入 if 子句
  • 你用 sudo 来执行 UID == 0 的脚本;如果在/etc/sudoers 中设置了 env_reset(大多数发行版中的默认设置),sudo 不会保留环境。您需要 sudo -E 来保留环境。
  • 你退出(回显之前)

从 sudo 调用中输入干净的环境。

  • 你输入 UID == 0
  • 你没有输入if子句,var2没有设置
  • 你回显变量。

关于linux - 变量没有被回显,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/665262/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com