В чем разница между `VAR=...` и `export VAR=...`?

Какая разница в выполнении

$ MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=384m"

делать

$ export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=384m"

и есть ли какой-либо побочный эффект выполнения любого в соединении SSH?

2 ответа

Решение

1-й устанавливает значение для переменной. Например, вы можете сделать

echo $MAVEN_OPTS

и он возвращает значение, но если вы выдадите его вне вашей оболочки, вы получите пустую строку.

В приходит export,

Экспорт - это инструкция к оболочке. Он говорит оболочке сделать эту переменную среды доступной для других программ. Без экспорта они доступны только внутри самой оболочки.

Если вы хотите, чтобы переменная была постоянно доступна, ssh читает ~/.ssh/environment,ssh2 читает /etc/environment а также ~/.ssh2/environmentи добавляет строки в формате VARNAME= значение в среду. От ssh справочная страница.

MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=384m"

Устанавливает переменную оболочки с именем MAVEN_OPTS, Это, вероятно, сопровождается export MAVEN_OPTS команда, чтобы сделать эту переменную доступной как переменная окружения для дочерних программ, или команда оболочки, которая использует ее как java $MAVEN_OPTS ...

export MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=384m"

Устанавливает переменную среды с именем MAVEN_OPTS, Эта переменная среды также доступна для дочерних программ.

Там нет никаких побочных эффектов, за исключением того, что некоторые ограничения памяти Java регулируются для maven (система сборки iirc).

Другие вопросы по тегам