小编Kul*_*gar的帖子

使用 su -c 时哪些文件是来源?

语境

您正在使用 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)

command-line bash root bashrc su

8
推荐指数
1
解决办法
3866
查看次数

标签 统计

bash ×1

bashrc ×1

command-line ×1

root ×1

su ×1