Установка переменных среды в 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