我正在编写一个图形应用程序,它会在某一点提示pkexec窗口,但是,使用pkexec会将执行路径更改为/ root目录,我试图执行上一个命令路径。例如
pwd # returns /home/myuser/Desktop
pkexec pwd # returns /root
我想第二个pkexec在/ home / myuser / Desktop中执行pwd。 cd不能使用pkexec,我看不到执行或转到其他路径的选项
答案 0 :(得分:0)
pkexec 似乎不是故意这样做的。我有一个非常具体的用例,我希望 pkexec 能够在工作目录中执行内容。我想出的答案是编写两个脚本:脚本 A 将目录更改为第一个参数,然后将其他参数作为命令执行,脚本 B 在脚本 A 上调用 pkexec,将当前目录作为第一个参数,其余为参数作为“真实”参数。
脚本 A("exec-in-dir" -- 必须安装在 /usr/local/bin 或通用的某个地方):
#!/bin/bash
cd $1
shift
eval $@
脚本 B(“pkw”):
#!/bin/bash
pkexec exec-in-dir $PWD "$@"
有点像黑客,但似乎有效。
请注意,通过这样做,您在某种程度上颠覆了创建 pkexec 时所做的一些设计决策,无论好坏。我会特别小心地将这个包装器用于图形应用程序,因为 pkexec 总是更改目录的部分原因是为了避免,例如,nautilus 在您的用户目录中以 root 身份启动并弄乱您的所有权限。