Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Path 在路径中找到正在运行的命令?_Path_Environment Variables_Qt5_Qprocess - Fatal编程技术网

Path 在路径中找到正在运行的命令?

Path 在路径中找到正在运行的命令?,path,environment-variables,qt5,qprocess,Path,Environment Variables,Qt5,Qprocess,我正在尝试通过QProcess运行命令,但它不起作用。我的命令类似于utility-someflag/path/to/file。实用程序位于路径中,但是QProcess似乎没有使用此环境变量 命令失败了,我需要指定我想要避免的实用程序的完整路径 这有什么办法吗?基本上是让QProcess使用PATH变量的某种方法?所以问题在于它取决于应用程序的启动方式。这在OSX上,但在其他平台上可能类似: 如果它是一个命令行应用程序,并且从终端启动,那么它将可以访问env变量 如果它是从Qt Creator启

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

命令失败了,我需要指定我想要避免的实用程序的完整路径


这有什么办法吗?基本上是让QProcess使用PATH变量的某种方法?

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

如果它是一个命令行应用程序,并且从终端启动,那么它将可以访问env变量

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

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

在我的例子中,由于它是一个GUI应用程序,所以解决方案是手动更新.app包。首先,文件Info.plist需要从以下位置更改:

<key>CFBundleExecutable</key>
<string>MyApplication</string>
source ~/.bash_配置文件行尤其确保正确设置包括PATH变量在内的所有环境

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