Linux 如何以另一个用户的.bash_配置文件而不是当前用户&x27;的身份执行命令;s

Linux 如何以另一个用户的.bash_配置文件而不是当前用户&x27;的身份执行命令;s,linux,sudo,init,su,.bash-profile,Linux,Sudo,Init,Su,.bash Profile,我想在启动脚本(rc.local)中以非root用户身份运行命令。我要执行的命令实际上是非root用户的.bash\u配置文件中的别名。我试着用 su - myuser -c aliased_cmd 但这不起作用。如果我只是打字 su - myuser # wait for login... aliased_cmd 它工作得很好,但显然这在实际脚本中并不合适。当然,我可以将我想要使用的别名和函数复制到实际的rc.local文件中,但这似乎有点愚蠢。。。也许有一个我不知道的选项或一种使用sud

我想在启动脚本(rc.local)中以非root用户身份运行命令。我要执行的命令实际上是非root用户的.bash\u配置文件中的别名。我试着用

su - myuser -c aliased_cmd
但这不起作用。如果我只是打字

su - myuser
# wait for login...
aliased_cmd

它工作得很好,但显然这在实际脚本中并不合适。当然,我可以将我想要使用的别名和函数复制到实际的rc.local文件中,但这似乎有点愚蠢。。。也许有一个我不知道的选项或一种使用sudo的方法?

引用
man su

使用-时,必须将其指定为最后一个su选项

它没有指定如果不是最后一个选项会发生什么。此外,在概要中,用户名在所有选项之后


您是否尝试过
su-c aliased\u cmd-myuser
su-l-c aliased\u cmd myuser

在获取配置文件后,包括以下内容

shopt -s expand_aliases

在执行alias命令之前,您是否尝试过执行“source/path to non-root user home dir/.bash_profile”?这是一个好主意,实际上,这不起作用的事实可能指出了问题所在?这似乎确实应该起作用:su-myuser-c“source.bash\u profile;aliased\u cmd”您是否尝试过
--preserve environment
su-c'echo“$SHELL”'myuser
?可能是命令没有在Bash shell中执行。当然是Bash,运行su-myuser-c“cat.Bash_profile”确认它是正确的…作为一个实验,我在.Bash_profile中添加了一个echo以确保它正在运行。是的,但我的别名仍然不起作用,所以我尝试调用一个函数,但确实起作用了。我想问题解决了-不使用别名?有人知道这是为什么吗?只需将这一行添加到.bash_配置文件就可以了,谢谢!