Установка переменных среды в Linux с помощью Bash - PullRequest
65 голосов
/ 24 октября 2008

В 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?

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

Ответы [ 5 ]

100 голосов
/ 24 октября 2008

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

33 голосов
/ 25 октября 2008

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

VAR=value
export VAR

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

export VAR=value

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

26 голосов
/ 20 августа 2014

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

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

el@server /home/el $ set | grep LOL
el@server /home/el $
el@server /home/el $ env | grep LOL
el@server /home/el $

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

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

el@server /home/el $ LOL="so wow much code"
el@server /home/el $ set | grep LOL
LOL='so wow much code'
el@server /home/el $ env | grep LOL
el@server /home/el $

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

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

el@server /home/el $ LOL="so wow much code"
el@server /home/el $ set | grep LOL
LOL='so wow much code'
el@server /home/el $ exec bash
el@server /home/el $ set | grep LOL
el@server /home/el $

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

el@server /home/el $ LOL="so wow much code"
el@server /home/el $ set | grep LOL
LOL='so wow much code'
el@server /home/el $ unset LOL
el@server /home/el $ set | grep LOL
el@server /home/el $

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

Повышение локальной переменной до переменной среды:

el@server /home/el $ DOGE="such variable"
el@server /home/el $ export DOGE
el@server /home/el $ set | grep DOGE
DOGE='such variable'
el@server /home/el $ env | grep DOGE
DOGE=such variable

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

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

el@server /home/el $ exec bash
el@server /home/el $ env | grep DOGE
DOGE=such variable
el@server /home/el $ set | grep DOGE
DOGE='such variable'

Сброс всех переменных среды:

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

el@server /home/el $ export CAN="chuck norris"
el@server /home/el $ env | grep CAN
CAN=chuck norris
el@server /home/el $ set | grep CAN
CAN='chuck norris'
el@server /home/el $ env -i bash
el@server /home/el $ set | grep CAN
el@server /home/el $ env | grep CAN

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

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

el@server /home/el $ export FOO="bar"
el@server /home/el $ env | grep FOO
FOO=bar
el@server /home/el $ unset FOO
el@server /home/el $ env | grep FOO
el@server /home/el $
11 голосов
/ 24 октября 2008

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

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

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

7 голосов
/ 24 октября 2008

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

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