首页 > 解决方案 > 如何获取父进程的用户?

问题描述

我正在编写一个程序,它使用自己的配置文件(在 /etc/program/ 和 ~/.config/program/ 中)问题是有时它需要以 root 身份执行(所以大部分时间使用 sudo)并在这种情况〜/ .config / program实际上在root的目录中(在我的情况下是/root)我希望我的程序使用用户的配置文件,即使与sudo一起使用。我的想法是首先获取父程序的 PID(在我的情况下为 BASH)——通常由普通用户执行——然后获取执行父程序的用户的名称。我很容易找到如何获取 PPID,但我没有找到如何找到用户名。

我想象一个像这样的脚本:

parents_name=$(echo $PPID | *command_which_gives_the_name_from_a_PID*)

. /home/$parents_name/.config/program # includes the user's config file

我希望有人有一个遮阳篷!

标签: bashconfigsudopid

解决方案


sudo将调用用户的名称添加到命令的环境中。

. /home/$SUDO_USER/.config/program

$HOME 可能已经和 一样了/home/$SUDO_USER,但是有太多的配置方法sudo使它成为目标用户的主目录。

但是,这会使您的脚本依赖于. sudo最好是明确的并将所需配置的路径作为参数传递给脚本。就像是

sudo theScript "$HOME/.config/program"

. "$1"

推荐阅读