linux - 为什么 userA$ sudo su userB -c 'printenv' 不打印 userB 的环境详细信息

标签 linux shell unix environment-variables

我有两个用户 userA 和 userB。

我想打印 userB 的 env 详细信息。我正在从用户 A 运行以下命令。

userA$ sudo su userB -c 'printenv'

但它会打印用户 A 的环境详细信息。如何解决?

如果我切换到 userB 并执行 printenv 然后它会按预期打印 userB 的环境详细信息。 PYTHONPATH 和其他变量也发生了同样的事情。

请注意,我需要像在单个命令中那样运行命令。我不能先切换到 userB 然后运行 ​​printenv

最佳答案

你应该使用这个:

userA$ sudo su - userB -c 'printenv'

su 连字符 (-) 将环境变量更改为新用户的环境变量,由他们的 ~/.bashrc 指定。

关于linux - 为什么 userA$ sudo su userB -c 'printenv' 不打印 userB 的环境详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40153395/

相关文章:

shell - 如何在非交互模式下配置 pam-auth-update?

linux - 通过 cURL 远程执行 Bash 脚本

java - adb命令在java中的等效版本?

c - C 中的登录模拟器,取消引用不完整类型错误

c++ - 在 64 位 C++ 程序中使用 32 位库

android - 如何通过 Complete Linux Installer 远程 ssh 到 Linux 服务器安装/运行在 Android 设备上

regex - 隐藏猫提示错误

linux - 打印所有行直到匹配给定模式的最后一行的简洁方法

linux - 为什么我不能运行我的 shell 脚本来列出用户?

c - socket 。设置 sockaddr_in 结构的 s_addr 字段