我从 root 角度运行一个 bash 脚本,然后启动脚本中的一个程序
su -c "sh /home/user2/script.sh" -m user2
问题是这个脚本启动的程序在执行时用户2,仍在尝试创建文件/根/.配置/,这当然会失败,因为它不允许用户2。
我做错什么了吗?有没有更好的方法可以在脚本中实际更改用户,输入用户密码然后启动程序?
答案1
如果您使用-m
参数su
,它将把您当前的环境传递给正在执行的命令或 shell。具体来说,变量$HOME
将在调用 shell 中设置为其值,而不是由调用的用户确定。
因此,如果您以 身份登录root
,则在 下执行时$HOME
将是/root
并且保持如此。除非您想要保留环境的其他部分,否则您可以简单地从调用中省略 。script.sh
su -m
-m
su