swift - Swift CLI - $PATH 不完整
问题描述
我正在将 CLI 工具构建为 Swift 包。部分流程需要我调用一些流程(例如gsutil
)。当我尝试调用这些时,我总是以
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'launch path not accessible'
一些进一步的分析表明,诸如pwd
or之类的常规命令可以which
正常工作。如下图所示,如果我尝试echo $PATH
,我会得到一个不完整的结果。
/Applications/Xcode-beta.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin\n
$PATH
与我的实际变量完全不同:
echo $PATH
/Users/skwiggs/google-cloud-sdk/bin:/Users/skwiggs/.npm-global/bin:/Users/skwiggs/.rbenv/bin:/Users/skwiggs/.rbenv/shims:/Users/skwiggs/google-cloud-sdk/bin:/Users/skwiggs/.npm-global/bin:/Users/skwiggs/.rbenv/bin:/Users/skwiggs/.rbenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/share/dotnet:~/.dotnet/tools:/Library/Apple/usr/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands
在调试 CLI 工具时,如何确保正确设置了我的环境变量?
解决方案
直接从 shell 运行该工具会将预期$PATH
值传递给它,因此此问题仅在调试时发生。
如果要使用正确的$PATH
值调试程序,可以在活动方案中添加环境变量。该变量仅在调试时使用,因此覆盖它是安全的(从外壳调用您的产品时它将被忽略)。
- 打开终端
- 跑
echo $PATH
- 复制输出
然后,打开 XCode
方案 -> 编辑方案 -> 运行 -> 环境变量 -> 添加。
名称 PATH
值 <paste the value from terminal>
构建并运行,您现在可以像从 shell 调用您的项目一样进行调试。
(请记住,对于需要此行为的每个新项目,您都必须这样做,并且对您的任何更改$PATH
都必须改装到您的项目中)
推荐阅读
- android - Android Checkbox 错误“在空对象引用上”
- javascript - 等待 API 调用
- java - 用 Java 中的未知键解析 JSON 对象
- awk - 如何基于多列 awk 比较 2 个 csv 文件?
- django - Django 按模型字段分组
- php - 在此 PHP 代码中将 URL 的状态代码显示为 0
- android - 无法连接到 MySQL:用户 ''@'localhost' 的访问被拒绝(使用密码:否)
- javascript - 如何在 WP 中找到特定的类
- azure - 在 gmail 中使用逻辑应用发送附件失败
- amazon-web-services - 无法在 AWS EC2 实例 Ubuntu 上安装来自亚马逊存储库的软件包