gpt4 book ai didi

bash - 如何获取父进程的用户?

转载 作者:行者123 更新时间:2023-12-03 21:13:37 25 4
gpt4 key购买 nike

我正在编写一个程序,它使用自己的配置文件(在/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
我希望有人有一个awnser!

最佳答案

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

. /home/$SUDO_USER/.config/program
$HOME可能已经与 /home/$SUDO_USER 相同,但是配置的方式太多了 sudo使其成为目标用户的主目录。

但是,这会使您的脚本依赖于被 sudo 调用。 .最好是明确的并将所需配置的路径作为参数传递给脚本。就像是
sudo theScript "$HOME/.config/program"


. "$1"

关于bash - 如何获取父进程的用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62030068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com