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

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

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

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

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


person Leedehai    schedule 10.10.2018    source источник


Ответы (1)


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

Чтобы переопределить 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 "$@"
}
person tripleee    schedule 10.10.2018
comment
Спасибо! Думаю, я мог бы просто установить псевдоним: alias lldb='PATH=/usr/bin lldb' - person Leedehai; 10.10.2018