为什么我不能在“chown $whoami path”中使用“$whoami”作为变量?

nyl*_*pej 3 bash variable

为什么这不起作用?

[my_user@archlinux ~]$ sudo chown -R ${whoami} /my_folder/path1/path2
chown: missing operand after ‘/my_folder/path1/path2’
Try 'chown --help' for more information.


[my_user@archlinux ~]$ sudo chown -R my_user /my_folder/path1/path2
[my_user@archlinux ~]$ ${whoami}
[my_user@archlinux ~]$ $whoami
Run Code Online (Sandbox Code Playgroud)

但:

[my_user@archlinux ~]$ whoami
my_user
Run Code Online (Sandbox Code Playgroud)

如何使用whoamiin的结果sudo chown -R?

Kus*_*nda 9

该变量 $whoami没有一个值。你可以给它一个值

whoami=$(whoami)
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,您可能希望$(whoami)直接使用命令替换:

sudo chown -R "$(whoami)" /my_folder/path1/path2
Run Code Online (Sandbox Code Playgroud)

命令替换 ,$(...)扩展到其中的命令输出(减去任何尾随换行符)。

变量$LOGNAME(和/或$USER)应该与返回的值相同whoami,这意味着你也可以这样做

sudo chown -R "$LOGNAME" /my_folder/path1/path2
Run Code Online (Sandbox Code Playgroud)