Environment-Variables
$(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)
變數(或任何它們被稱為的變數)?
logname(1)是一個返回目前使用者登錄名的命令。
$( ... )
是命令替換的語法,即“在此處替換命令的輸出”因此,如果您的使用者是
foo
您正在執行:sudo sh -c 'echo "foo ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/foo' & sudo chmod 440 /etc/sudoers.d/foo