我希望以ss
以下用户身份运行这些命令:root
mkdir bin
cp -r /opt/gitolite .
gitolite/install -ln
gitolite setup -pk ss.pub
mkdir -p .gitolite/hooks/common
ln -s /opt/pre-receive .gitolite/hooks/common/
所以一切都在 中执行/home/ss
。第 4 行需要,$HOME/bin
正如您从第 3 行看到的那样。
使它工作的唯一方法是添加su -c "command" ss
到每一行,但这不是一个好的办法。
这是我之前的一个扩展问题,我说的不够精确。
问题
我如何以实用的方式将所有这些命令作为脚本运行?
答案1
为什么不把它变成一个实际的可执行脚本,并在以其他用户身份运行时调用该脚本su
答案2
shell 脚本就是 shell 脚本。这意味着您不仅可以运行常规的 shell 命令,还可以执行您正在使用的任何 shell 的内置命令。我们可以稍微修改您的脚本,让所有命令都像在运行此脚本的用户的主目录中一样运行。
#!/bin/bash
cd $HOME
mkdir bin
cp -r /opt/gitolite .
gitolite/install -ln
gitolite setup -pk ss.pub
mkdir -p .gitolite/hooks/common
ln -s /opt/pre-receive .gitolite/hooks/common/