Environment-Variables

$(logname) 的意義是什麼?

  • August 2, 2019
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

引用自:https://unix.stackexchange.com/questions/533573