2016-06-17 2 views
1

Там в Баш скрипт на моем Linux машине с этими двумя линиями:Что делает экспортная переменная без знака равенства?

[ -r /etc/java/java.conf ] && . /etc/java/java.conf 
export JAVA_HOME 

Что экспорт JAVA_HOME делать? Обычно я думал, что экспорт VARIABLE_NAME = что-то задает переменную.

Что делает запуск экспорта JAVA_HOME без установки его на что-то?

Я попытался запустить его на командной строке, но ничего не происходит.

+0

Вы пробовали чтение [документацию] (https://www.gnu.org/software/bash/manual/html_node/Bourne-Shell -Builtins.html # Bourne-Shell-Встроенные команды)? – melpomene

+0

Справедливости ради следует отметить, что связанная с документацией информация не действительно касается того, что задал ОП - @melpomene –

+1

@JonnyHenly * * Отметьте каждое имя, которое будет передано дочерним процессам в среде. * "- Это то, что делает' export'. – melpomene

ответ

3

две строки кода (лучше использовать двойные скобки):

[[ -r /etc/java/java.conf ]] && . /etc/java/java.conf 
export JAVA_HOME 

... приравнивает к этому:

-r проверяет наличие /etc/java/java.conf существует и доступен для чтения.

&& Если условие выше верно, то исходный файл.

export JAVA_HOME принимает ранее назначенное значение $JAVA_HOME из исходного файла, что делает его доступным для подпроцессов, а не только внутри оболочки.

+1

Он не «берет его из файла чтения» в команде 'export' - это было сделано ранее, когда он был найден, и назначил переменную оболочки. Это экспортирует переменную оболочки, что также делает ее переменной окружения. Это очень разные операции; объяснение, которое объединяет их, не помогает понять. –

+0

@CharlesDuffy: Спасибо! –

+1

NP - как отредактировано, я думаю, что это очень ясный и полезный ответ! –