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

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

А есть прямой 9X_shell-command аналог? Переменные среды предназначены для 9X_unix поиска исполняемого файла.

82
0
5
Общее количество ответов: 5

Ответ #1

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

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

118
1

  • PS: в последних двойных кавычках нет необходимости. Оболочка не выполняет разделение слов для присвоения пе ...

Ответ #2

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

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

VAR=value
export VAR

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

export VAR=value

заключается 9X_bash в том, что более длинная форма работает 9X_unix-utils в большем количестве различных оболочек, чем 9X_.bash-profile короткая. Если вы знаете, что имеете дело 9X_shellscript с bash, конечно, любой из них работает нормально.

39
0

Ответ #3

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

Установите локальную переменную и переменную среды с помощью 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 $

Проверка работоспособности, без локальной 9X_bash-function переменной или переменной среды с именем 9X_shell-script 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 существует в локальных 9X_shell-script переменных, но не в переменных среды. LOL 9X_unix исчезнет, ​​если вы перезапустите терминал, выйдете 9X_shell-command из системы / войдете в систему или запустите 9X_shell-scripting 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

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

Экспортированная переменная DOGE, указанная 9X_shell выше, переживает сброс 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'

Отменить все переменные среды:

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

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

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

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

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 $

29
0

Ответ #4

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

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

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

export VAR=value - это 9X_shellscript сокращение, выполняющее и то и другое.

11
3

  • разве это не передает это родительским процессам, а не дочерним? ...

Ответ #5

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

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

export VARIABLE=value

8
0