$(logname) 有什么意义?

$(logname) 有什么意义?
sudo sh -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/$(logname)' & sudo chmod 440 /etc/sudoers.d/$(logname)

我使用上面的一行代码允许当前用户在远程连接的主机上无需密码即可执行 sudo。

但到底是什么$(logname)

在本地计算机上,echo $(logname)不返回任何内容,而echo $LOGNAME返回,因此它不是环境变量,尽管我从未见过该值在远程计算机上有任何不同。

另外,是否还有其他类似的$(foo)变量(或它们的名称)?

答案1

日志名(1)是一个将返回当前用户的登录名的命令。
$( ... )的语法是命令替换这就是说“在这里替换命令的输出”

因此,如果您的用户是foo您正在执行:

sudo sh -c 'echo "foo ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/foo' & sudo chmod 440 /etc/sudoers.d/foo

相关内容