env в macOS не применяет переменные окружения - PullRequest
0 голосов
/ 10 июля 2019

Меня немного смущает следующее:

 /usr/bin/env  V=hello echo $V somestring

выводит только

somestring

не hello somestring, как я ожидал от man env.

Однако, хвост

/usr/bin/env V=hello printenv

есть

_=/usr/bin/env
V=hello

Почему это происходит?

1 Ответ

3 голосов
/ 10 июля 2019

env устанавливает среду, которая наследуется дочерним процессом, который выполняет команду.Но вы расширяете переменную в исходной оболочке и передаете результат в качестве аргумента env.

Попробуйте это:

/usr/bin/env V=hello bash -c 'echo $V somestring'

Одинарные кавычки не позволяют переменной бытьрасширен в оригинальной оболочке.Затем вы запускаете новый процесс оболочки, который расширяет саму переменную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...