为了使用变量 username 和变量 user_home 在当前用户的 home 中创建子目录,然后将新子目录的所有权更改为当前用户,需要在下面的命令中进行哪些具体更改?
我们当前在 GitHub ubuntu-lastest 运行程序中使用的命令太脆弱,因为以下命令使用用户的显式名称:
mkdir /home/runner/mysubdirectory/
sudo chown -R runner:runner /home/runner/mysubdirectory/
该OP询问如何替换/home/runner
为当前用户主页的变量声明,以及如何替换runner:runner
为当前用户姓名的变量表示。
答案1
你可以这样做:
username=runner
sudo -Hu "$username" sh -c 'mkdir ~/mysubdirectory'
它mkdir
作为目标用户(以及该用户的主要 gid)从 shell 运行,where$HOME
已设置为该用户的主目录,-H
因此 where~
将扩展到该用户。
或者您可以调用getent
来检索用户的信息:
IFS=: read -r name x uid gid gecos home shell < <(
getent -- passwd "$username") &&
sudo install -o "$uid" -g "$gid" -d "$home/mysubdirectory"