Установка переменных среды в Linux с помощью Bash
В tcsh
у меня есть следующий script рабочий:
#!/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?
Есть ли прямой аналог? Переменные среды - это поиск исполняемого файла.
Ответы
Ответ 1
export VAR=value
установит значение VAR. Включите его в одинарные кавычки, если вы хотите пробелы, например export VAR='my val'
. Если вы хотите, чтобы переменная была интерполирована, используйте двойные кавычки, например export VAR="$MY_OTHER_VAR"
.
Ответ 2
Причина, по которой люди часто предлагают писать
VAR=value
export VAR
вместо более короткого
export VAR=value
заключается в том, что более длинная форма работает в более разных оболочках, чем в короткой форме. Если вы знаете, что имеете дело с bash
, то, конечно, отлично работает.
Ответ 3
Установите локальную переменную и переменную окружения с помощью 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 reset:
[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'
Отменить все переменные среды:
Вы должны вытащить банку Чак Норриса в reset все переменные среды без выхода из системы/входа:
[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
Вы создали переменную окружения, а затем reset терминал, чтобы избавиться от них.
Или вы можете вручную установить и отключить переменную среды следующим образом:
[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 $
Ответ 4
VAR=value
устанавливает значение VAR в значение.
После этого export VAR
также передаст его дочерним процессам.
export VAR=value
является сокращением, выполняющим оба.
Ответ 5
Я думаю, что вы ищете export
- хотя я мог ошибаться. Я никогда не играл с tcsh раньше. Используйте следующий синтаксис:
export VARIABLE=value