Почему в некоторых скриптах используется экспорт системных переменных? [дубликат]

Это служебный файл systemd. Поместите в / lib / systemd / system / Или, если у вас нет systemd, используйте начальный скрипт из предыдущей версии Rocket.Chat.

2
28.02.2016, 17:58
2 ответа

В руководстве bash говорится о export:

export [-fn] [name[=word]] ...
export -p
        The  supplied names are marked for automatic export to the envi‐
        ronment of subsequently executed commands. [...]

Это означает, что когда переменная экспортируется, она будет доступна любому дочернему процессу оболочки, которая ее экспортировала. Для примера:

$ foo="bar"              
$ bash -c 'echo "$foo"'  ## the variable isn't available to the child

$ export foo="bar"
$ bash -c 'echo "$foo"' ## the child also gets the variable
bar

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

1
27.01.2020, 22:04

Иногда у вас есть зависимости версии, которая будет использоваться для запуска чего-либо. В вашем случае это будет версия Java для работы вашего сервера Tomcat. Глобальная версия Java может со временем измениться и привести к сбою вашего сервера Tomcat из-за ошибок или несовместимости. Поэтому, если вы определяете свой собственный JAVA_HOME , вы можете убедиться, что ваш Tomcat запускается с версией Java, которую вы ранее тестировали и на которую можно положиться. Другой момент может заключаться в том, что у вас запущено несколько экземпляров и вам нужно указать другой CATALINA_HOME для разных экземпляров.

Я думаю, что лучше всего определять переменные явно, вместо того, чтобы полагаться на переменные, которые могут изменяться со временем или даже не существовать, в зависимости от конфигурации всей системы. Это также упрощает устранение неполадок и просмотр используемых путей и двоичных файлов.

2
27.01.2020, 22:04

Теги

Похожие вопросы