我正在尝试在我的 Centos VM 上配置自动注销。我注意到如果我在/etc/profile.d/autologout.sh 创建一个文件,其中只有 set autologout = 30
在文件中,然后它会中断任何来自/etc/profile 的脚本的传递参数。
显示这一点的示例脚本是:
#!/bin/bash
source /etc/profile
echo ${@}
当我运行它时,脚本只看到参数“autologout 30”并且它没有得到任何我在运行时尝试传递它的参数。
无论自动注销脚本的名称、属性的名称是什么,或者我是否有
set autologout 30
,都会发生这种情况。反而。有人可以解释发生了什么吗?好像 autologout.sh 正在劫持参数。我对正在发生的事情感到茫然,研究 profile.d 和 set 命令什么也没发现。
最佳答案
set
不用于修改 POSIX 兼容 shell 中的 shell 变量。相反,当给定位置参数时,它会修改命令行参数列表。
如果你只想给一个变量赋值,不要使用set
.相反,您的文件应该只包含:
autologout=30
...和
"$@"
将保持其原始状态。
关于linux - 为什么使用 "set var = value"采购脚本会破坏 $@?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47420197/