Получить ту же переменную среды PATH из команды терминала при отладке приложения из XCode? - PullRequest
0 голосов
/ 03 мая 2019

Если я отлаживаю приложение командной строки из XCode, я получаю другой $ PATH, чем если бы я запускал то же приложение из сеанса терминала.

Например, при запуске из терминала:

$env | grep "PATH="
//output: PATH=/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin

...
Из сеанса отладки Xcode:

let environment = ProcessInfo.processInfo.environment
print(environment["PATH"] ?? "No PATH found")
//output: /Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin

В результате некоторые приложения командной строки недоступны во время отладки.

Как получитьпеременная окружения $ PATH окна терминала в сеансе отладки Xcode?

1 Ответ

0 голосов
/ 06 мая 2019

Как сказал Мартин R в своем комментарии, среда, передаваемая программам с графическим интерфейсом, отличается от среды, используемой приложениями оболочки.

Я никогда не находил простого решения проблемы.Я подозреваю, что пути среды устанавливаются либо с помощью launchctl, либо для приложений с графическим интерфейсом предоставляется значение по умолчанию.

Наконец, я закончил тем, что изменил среду, используемую классом Process (Swift).Хотя и не идеально (и, конечно, сложнее, чем я надеялся), оно работает.Вы можете найти полную реализацию, которую я использовал по адресу: GitHub

...