Как установить переменную среды в cygwin?

В linux я бы пошел:

setenv -p MYVAR "somevalue"

Но это не работает в cygwin.

Ответы

Ответ 1

По умолчанию Cygwin запускает Bourne shell или Bash, поэтому команда для установки переменной отличается. Это код, который вам нужен:

export MYVAR="somevalue"

Часть export позволяет оболочке знать, что это переменная среды вместо локальной переменной.

Если вы наберете ls -a в своем домашнем каталоге, вы увидите некоторые или все из следующих файлов:

.bashrc
.bash_profile
.profile

.bash_profile выполняется для систем входа в систему, а .bashrc выполняется для интерактивных оболочек без входа. Чтобы просто убедиться, что переменная среды всегда установлена, откройте .bash_profile и добавьте текст:

export MYVAR="somevalue"

Ваша оболочка с последующим выполнением .bash_profile при каждом запуске, и она запустит эту команду. Затем вы будете иметь переменную MYVAR, доступную все время. Если вы не указали export переменную, она будет доступна только в вашем файле .bash_profile.

Вы можете проверить, что эта переменная определяется путем печати ее значения в оболочке:

echo $MYVAR

Вы можете удалить (удалить) переменную с помощью:

unset $MYVAR

Краткие слова в файлах конфигурации оболочки

В стороне, в отношении .bashrc vs .bash_profile vs. .profile, см. ответы:

Для простоты конфигурации я рекомендую найти файл .bashrc с .bash_profile. Добавьте это в .bash_profile:

if [ -f ${HOME}/.bashrc ]; then
   source ${HOME}/.bashrc
fi

Загрузка .bashrc из .bash_profile.

Если вы это сделаете, вы можете вместо этого поместить следующую строку в .bashrc, если хотите:

export MYVAR="somevalue"

Ответ 2

Лучший способ настроить переменные среды в cygwin - создать профиль bash и выполнить этот профиль каждый раз, когда вы входите в систему и запускаете оболочку.

В моем файле .bash_profile это параметр, который у меня есть

JAVA_HOME = C:/Program Files/Java/jdk1.7.0_51
export JAVA_HOME
export PATH=$PATH:$JAVA_HOME/bin

Как только вы запустите bash, проверьте echo $JAVA_HOME, и вы увидите путь как вывод.