1

В bash доступен трюк, позволяющий установить переменную среды для дочернего процесса и запустить ее в одну строку, сохранив исходные значения переменной в оболочке. Например, чтобы установить переменные окружения "LANG" и "FOO", а затем запустить "gedit", мы будем использовать следующую команду (из документов Ubuntu):

LANG=he_IL.UTF-8 FOO=bar gedit

Это не работает в Zsh.

Есть ли такая же простая альтернатива?

1 ответ1

2

То, что вы описываете, работает в Zsh так же, как и в Bash. Из руководства:

Простая команда - это последовательность необязательных назначений параметров, за которыми следуют слова, разделенные пробелами, с перемежением необязательных перенаправлений. Первое слово - это команда, которая должна быть выполнена, а остальные слова, если они есть, являются аргументами команды.

Если дано имя команды, присваивания параметров изменяют среду команды при ее выполнении. (...)

... и в Баше:

Когда выполняется простая команда, оболочка выполняет следующие расширения, назначения и перенаправления слева направо.

  1. Слова, помеченные синтаксическим анализатором как присвоения переменных (предшествующие имени команды) и перенаправления, сохраняются для последующей обработки.

...

Если имя команды не найдено, присваивание переменных влияет на текущую среду оболочки. В противном случае переменные добавляются в среду выполняемой команды и не влияют на текущую среду оболочки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .