Установка переменных окружения для нескольких команд в bash однострочном
Скажем, у меня есть следующая команда
$ > MYENVVAR = myfolder echo $MYENVVAR && & MYENVVAR = myfolder ls $MYENVVAR
Я имею в виду, что MYENVVAR = myfolder повторяет
Можно ли установить его один раз для "& &" разделенные команды, сохраняя команду на одной строке?
Ответы
Ответ 1
Предполагая, что вы действительно нуждаетесь в ней как переменная среды (хотя код примера действительно не нужен переменная среды, некоторые переменные оболочки не являются переменными среды):
(export MYENVVAR=myfolder; echo $MYENVVAR && ls $MYENVVAR)
Если вам это не нужно как переменная среды, то:
(MYENVVAR=myfolder; echo $MYENVVAR && ls $MYENVVAR)
Скобки создают суб-оболочку; переменные среды (и простые переменные), установленные в под-оболочке, не влияют на родительскую оболочку. В обеих приведенных командах переменная устанавливается один раз, а затем используется дважды, по одной из двух команд.
Ответ 2
Скобки создают новые процессы, где вы можете установить свои собственные переменные:
( MYENVVAR=myfolder; echo 1: $MYENVVAR; ); echo 2: $MYENVVAR;
1: myfolder
2:
Ответ 3
Считаете ли вы использование export, например
export MYENVVAR=myfolder
тогда введите ваши команды, например echo $MYENVVAR
(которые будут работать даже в под-оболочках) и т.д.