语境
您正在使用 Ubuntu LTS 14.04。您以 root 用户身份登录。您运行以下命令:
exec su simple_user -c "/bin/bash /etc/init.d/simple_user_service"
Run Code Online (Sandbox Code Playgroud)
以便“simple_user_service”以“simple_user”权限而不是root权限启动。
题
似乎“exec su simple_user -c”不为新的交互式shell终端提供.bashrc、.profile或任何其他通常来源的文件。我通过在 simple_user .bashrc 文件中添加这一行来确认:
export TEST="Hello"
Run Code Online (Sandbox Code Playgroud)
然后在我的“simple_user_service”初始化脚本中:
#!/bin/bash
### BEGIN INIT INFO
# Provides: test_script
# X-Interactive: true
# Short-Description: Test script
### END INIT INFO
echo $TEST
Run Code Online (Sandbox Code Playgroud)
当我执行脚本时,没有打印任何内容,但是如果我执行以下命令:
su simple_user
echo $TEST
> Hello
Run Code Online (Sandbox Code Playgroud)
TEST 变量已正确设置和打印。
所以我想知道:“exec su simple_user -c”命令是否提供任何 simple_user 配置文件/bashrc 文件?如果是这样,有没有办法知道哪些?
非常感谢你的帮助!
[编辑 - 2 小时后]
感谢我收到的答案,我更准确地理解了“man bash”指令。我找到了这个:
When bash is started non-interactively, to run a shell script, for …Run Code Online (Sandbox Code Playgroud)