我正在尝试在Centos VM上配置自动注销。我注意到如果我在/etc/profile.d/autologout.sh中创建一个文件,文件中只有set autologout = 30
,那么它会破坏任何源/ etc / profile脚本的传递参数。
显示此内容的示例脚本是:
#!/bin/bash
source /etc/profile
echo ${@}
当我运行它时,脚本只看到参数“autologout 30”,并且它在运行时没有得到任何我试图传递它的参数。
无论autologout脚本的名称,属性的名称,或者我是否set autologout 30
,都会发生这种情况。
有人可以解释一下发生了什么吗?好像autologout.sh正在劫持参数。我对正在发生的事情感到茫然,研究profile.d并且set命令没有任何结果。
答案 0 :(得分:2)
set
不用于修改符合POSIX的shell中的shell变量。相反,当给定位置参数时,它会修改命令行参数列表。
如果您只想为变量指定值,请不要使用set
。相反,您的文件应该只包含:
autologout=30
... "$@"
将保持原始状态。