LLDB с проблемой Python: установить PATH исключительно для одного исполняемого файла? - PullRequest
0 голосов
/ 10 октября 2018

Есть ли способ установить переменную PATH исключительно для одного исполняемого файла в bash-скрипте?

Я хочу сделать это, потому что LLDB macOS требует системного Python, а не моего Python под управлением Anaconda, поэтому янеобходимо убедиться, что /usr/bin находится в начале PATH.Но я предпочитаю управляемый Anaconda Python для повседневного использования, поэтому я не хочу постоянно устанавливать PATH только для размещения LLDB.

Временное написание PATH вручную до и после использования LLDB обременительно, поэтомуЯ думаю о каком-то сценарии-обертке или псевдониме, который автоматизирует эту процедуру.

PS LLDB имеет ту же проблему с Python, управляемым Homebrew.

1 Ответ

0 голосов
/ 10 октября 2018

Переменные среды по определению относятся к процессу.У каждого процесса есть копия среды, которую он может изменить по своим причинам.

Чтобы переопределить PATH только для одного вызова, все sh -совместимые оболочки позволяют вам сказать

PATH=newvalue executable with arguments

, который устанавливает PATH в newvalue на время выполнения executable with arguments, затем возвращает значение обратно в предыдущее состояние (текущее значение или не установлено, если оно не было установлено).

Если вы хотите переопределять что-либо в среде каждый раз, когда вы выполняете что-то, вам нужна оболочка.Предполагая, что у вас есть /usr/local/bin до /usr/bin в вашем PATH, вы можете установить это в /usr/local/bin/something для переопределения /usr/bin/something с помощью обёртки:

#!/bin/sh
PATH=newvalue
exec /usr/bin/something "$@"

Помните chmod a+x и, конечно, выдолжен быть root, чтобы иметь право на запись в этот каталог.

Для ваших личных нужд достаточно функции оболочки в вашем .profile или подобном.

something () {
    PATH=newvalue command something "$@"
}
...