【问题标题】: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 变量)都将正确设置。