В чем разница при экспорте переменной env в linux из файла?

105
10

Я работаю над Linux. В чем разница между следующими экспортными заявлениями двух переменных среды?

export PATH=/opt/rh/devtoolset-2/root/usr/bin${PATH:+:${PATH}}
export MANPATH=/opt/rh/devtoolset-2/root/usr/share/man:$MANPATH

спросил(а) 2014-01-13T13:56:00+04:00 6 лет, 8 месяцев назад
1
Решение
80

Использование синтаксиса ${PATH:+:$PATH} (используется для расширения $PATH) заботится о (патологическом) случае, когда $PATH пуст (или не задан). В этом случае результат будет пустым, иначе он будет :$PATH, гарантируя, что результатом расширения будет либо /opt/rh/devtoolset-2/root/usr/bin один (в патологическом случае), либо /opt/rh/devtoolset-2/root/usr/bin:$PATH в типичном случае.

Расширение $MANPATH не заботится о патологическом случае, поэтому в случае, если $MANPATH был пустым или не установленным, результатом будет /opt/rh/devtoolset-2/root/usr/share/man: содержащий измененную двоеточие в конце.

ответил(а) 2014-01-13T14:36:00+04:00 6 лет, 8 месяцев назад
41

В linux/unix PATH - стандартная переменная среды для поиска требуемых исполняемых и других файлов из любой точки. Итак, ваша оболочка просматривает, когда вы вводите команду. Использование первой команды. Чтобы изменить путь, это зависит от оболочек, таких как Bash, Sh, Ksh shell.

 export PATH=/opt/rh/devtoolset-2/root/usr/bin${PATH:+:${PATH}}

Он добавляет ваш путь к стандартному пути env Linux.

Хотя во втором

export MANPATH=/opt/rh/devtoolset-2/root/usr/share/man:$MANPATH

вы создаете свое собственное имя пути (MANPATH) и экспортируете его, чтобы теперь вы могли получить доступ ко всему пути, используя переменную $ MANPATH.

Обратите внимание, что изменение пути выше временного. для постоянных изменений вам необходимо изменить файл ~/.profile для оболочки sh и ksh или файл ~/.bash_profile для оболочки bash.

Например, в BASH

echo 'export PATH=$PATH:/usr/local/bin'  >> ~/.bash_profile

ответил(а) 2014-01-13T14:24:00+04:00 6 лет, 8 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема