【问题标题】:Execute pkexec command on a different path在不同的路径上执行 pkexec 命令
【发布时间】:2026-01-12 10:30:01
【问题描述】:

我正在编写一个图形应用程序,它会在某一时刻提示 pkexec 窗口,但是,使用 pkexec 会将执行路径更改为 /root 目录,我正在尝试执行上一个路径中的命令。例如

pwd # returns /home/myuser/Desktop
pkexec pwd # returns /root

我希望第二个 pkexec 在 /home/myuser/Desktop 中执行 pwd。 cd 不能与 pkexec 一起使用,我看不到执行或转到其他路径的选项

【问题讨论】:

  • pkexec --user myuser pwd
  • 将在用户主文件夹 (/home/myuser) 中执行 pwd,而不是之前的路径 (/home/myuser/Desktop)
  • @angrykoala 你成功了吗?我正在寻找答案!
  • 不行,我还不能解决

标签: linux bash


【解决方案1】:

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 身份启动并弄乱您的所有权限。

【讨论】: