【问题标题】:Running command found in PATH?在 PATH 中找到运行命令?
【发布时间】:2014-06-15 22:03:56
【问题描述】:

我正在尝试通过QProcess 运行命令,但它不起作用。我的命令类似于utility -someflag /path/to/file。 utility 在 PATH 中,但似乎 QProcess 没有使用此环境变量。

该命令完全失败,我需要指定实用程序的完整路径(我想避免)。

有没有办法解决这个问题?基本上有办法让QProcess 使用PATH 变量?

【问题讨论】:

    标签: path environment-variables qt5 qprocess


    【解决方案1】:

    所以问题在于它取决于应用程序的启动方式。这是在 OSX 上,但在其他平台上可能类似:

    • 如果它是命令行应用程序并从终端启动,那么它将可以访问环境变量。

    • 如果从 Qt Creator 启动,它将无法访问任何环境变量。

    • 如果它是一个 GUI 应用程序 (.app),它将无法访问 env 变量。

    在我的情况下,由于它是一个 GUI 应用程序,因此解决方案是手动更新 .app 包。首先需要更改文件 Info.plist:

    <key>CFBundleExecutable</key>
    <string>MyApplication</string>
    

    到这里:

    <key>CFBundleExecutable</key>
    <string>MyApplication.sh</string>
    

    然后,仍然在应用程序包中,在 Contents/MacOS 中,创建一个与应用程序同名但扩展名为 .sh 的新文件,例如。 “我的应用程序.sh”。然后创建启动器:

    #!/bin/sh
    SCRIPT_DIR=$(dirname "$0")
    source ~/.bash_profile
    logger "$SCRIPT_DIR/MyApplication"
    exec "$SCRIPT_DIR/MyApplication" $@
    

    source ~/.bash_profile 行尤其确保所有环境(包括 PATH 变量)都将正确设置。

    【讨论】:

      猜你喜欢
      • 2020-01-08
      • 1970-01-01
      • 2018-01-07
      • 1970-01-01
      • 2022-08-05
      • 2019-04-19
      • 1970-01-01
      • 1970-01-01
      • 2017-06-15
      相关资源
      最近更新 更多