Установка переменных перед командой в bash - PullRequest
2 голосов
/ 24 сентября 2019

Какая разница между:

GIT_TRACE=1 git push

и

GIT_TRACE=1; git push

То же самое не ведет себя одинаково, так как первый действительно выводит информацию трассировки при выполнении git push, так как это очевиднопроверяет, установлена ​​ли такая переменная (среда?).

1 Ответ

2 голосов
/ 24 сентября 2019
GIT_TRACE=1 git push

GIT_TRACE=1 добавляется в среду команды git push.Назначение переменной действует только для этой команды.Это не влияет на любые последующие команды.

GIT_TRACE=1; git push

A Переменная оболочки с именем GIT_TRACE установлена ​​на 1.Переменные оболочки отличаются от переменных среды .Дочерние процессы видят только переменные среды.Они не видят переменные оболочки.Это тонкое различие.И из-за этого git push не видит настройки и не оказывает никакого влияния.

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

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

export GIT_TRACE=1; git push

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

(export GIT_TRACE=1; git push)

Конечно, нет никаких причин делать это, поскольку GIT_TRACE=1 git push делает то же самое, но лучше (не разворачивает подоболочку)).

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