如何从另一个用户(使用PATH)运行脚本

我想这些命令作为root用户的ss用户运行

 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执行。 第四行需要$HOME/bin ,你可以从第三行看到。

唯一的办法就是让每一行都加上su -c "command" ss ,这不是一件好事。

这是我以前的问题的一个扩展,我不够精确。

如何以实际的方式将所有这些命令作为脚本运行?

为什么不让它成为一个真正的可执行脚本,并通过su作为另一个用户运行时调用脚本

一个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/