it-swarm.com.ru

Установка переменных среды в Linux с помощью Bash

В tcsh у меня работает следующий скрипт:

#!/bin/tcsh
setenv X_ROOT /some/specified/path

setenv XDB    ${X_ROOT}/db
setenv PATH   ${X_ROOT}/bin:${PATH}

xrun -d xdb1 -i $1 > $2

Что эквивалентно функции tcsh setenv в Bash?

Есть ли прямой аналог? Переменные среды предназначены для поиска исполняемого файла.

65
pbh101

export VAR=value установит значение VAR. Заключите его в одинарные кавычки, если вам нужны пробелы, например export VAR='my val'. Если вы хотите, чтобы переменная интерполировалась, используйте двойные кавычки, например export VAR="$MY_OTHER_VAR".

100
mipadi

Причина, по которой люди часто предлагают писать

VAR=value
export VAR

вместо короче

export VAR=value

является то, что более длинная форма работает в более разных оболочках, чем короткая форма. Если вы знаете, что имеете дело с bash, то, конечно, все работает нормально.

33
zaphod

Установите локальную переменную и переменную среды, используя Bash в Linux

Проверьте наличие локальных переменных или переменных среды для переменной с именем LOL в Bash:

[email protected] /home/el $ set | grep LOL
[email protected] /home/el $
[email protected] /home/el $ env | grep LOL
[email protected] /home/el $

Проверка работоспособности, нет локальной переменной или переменной среды с именем LOL.

Установите локальную переменную с именем LOL в локальной среде, но не в среде. Поэтому установите ее:

[email protected] /home/el $ LOL="so wow much code"
[email protected] /home/el $ set | grep LOL
LOL='so wow much code'
[email protected] /home/el $ env | grep LOL
[email protected] /home/el $

Переменная 'LOL' существует в локальных переменных, но не в переменных окружения. LOL исчезнет, ​​если вы перезапустите терминал, выйдете из системы/войдете в систему или запустите exec bash.

Установите локальную переменную, а затем очистите все локальные переменные в Bash

[email protected] /home/el $ LOL="so wow much code"
[email protected] /home/el $ set | grep LOL
LOL='so wow much code'
[email protected] /home/el $ exec bash
[email protected] /home/el $ set | grep LOL
[email protected] /home/el $

Вы также можете просто сбросить одну переменную:

[email protected] /home/el $ LOL="so wow much code"
[email protected] /home/el $ set | grep LOL
LOL='so wow much code'
[email protected] /home/el $ unset LOL
[email protected] /home/el $ set | grep LOL
[email protected] /home/el $

Локальная переменная LOL исчезла.

повысить локальную переменную до переменной среды:

[email protected] /home/el $ DOGE="such variable"
[email protected] /home/el $ export DOGE
[email protected] /home/el $ set | grep DOGE
DOGE='such variable'
[email protected] /home/el $ env | grep DOGE
DOGE=such variable

Обратите внимание, что при экспорте он отображается как как локальная переменная, так и переменная среды.

Экспортированная переменная DOGE выше переживает сброс Bash:

[email protected] /home/el $ exec bash
[email protected] /home/el $ env | grep DOGE
DOGE=such variable
[email protected] /home/el $ set | grep DOGE
DOGE='such variable'

Сбросить все переменные окружения:

Вы должны вытащить банку Чака Норриса, чтобы сбросить все переменные среды без выхода из системы/входа в систему:

[email protected] /home/el $ export CAN="chuck norris"
[email protected] /home/el $ env | grep CAN
CAN=chuck norris
[email protected] /home/el $ set | grep CAN
CAN='chuck norris'
[email protected] /home/el $ env -i bash
[email protected] /home/el $ set | grep CAN
[email protected] /home/el $ env | grep CAN

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

Или вы можете установить и удалить переменную окружения вручную следующим образом:

[email protected] /home/el $ export FOO="bar"
[email protected] /home/el $ env | grep FOO
FOO=bar
[email protected] /home/el $ unset FOO
[email protected] /home/el $ env | grep FOO
[email protected] /home/el $
26
Eric Leschinski

VAR=value устанавливает значение VAR.

После этого export VAR также передаст его дочерним процессам.

export VAR=value это сокращение, делающее оба.

11
iny

Я думаю, что вы ищете export - хотя я могу ошибаться .. Я никогда раньше не играл с tcsh. Используйте следующий синтаксис:

export VARIABLE=value
7
Oli