Я'запускаю Ubuntu 11.04. Я использую терминал для запуска сеанса bash, и я хочу добавить переменную среды:
$r@hajt:~$ env THEVAR=/example
Но это не работает. Он показывает все переменные, последней из которых является THEVAR, но другой вызов env
больше не показывает THEVAR
- env | grep THEVAR
ничего не возвращает.
Аналогично, скрипты с экспортом (export THEVAR=/example
) или другими назначениями переменных (THEVAR=/example
) не добавляют переменную окружения.
Я знаю, что делаю что-то не так, я знаю, что это должно быть что-то простое, но я просто не могу найти что.
UPDATE: Настоящий смысл моего вопроса заключался вот в этом: https://stackoverflow.com/questions/496702/can-a-shell-script-set-environment-variables-of-the-calling-shell
(В любом случае, я выберу самый популярный ответ и оставлю отредактированное название - это было не то, о чем я спрашивал)
env
запускает программу в измененном окружении, а затем удаляет все изменения.
Установить переменную только для текущей оболочки:
VARNAME="my value"
Чтобы установить ее для текущей оболочки и всех процессов, запущенных из текущей оболочки:
export VARNAME="my value" # shorter, less portable version
Чтобы установить его постоянно для всех будущих сессий bash, добавьте такую строку в файл .bashrc
в директории $HOME
.
Чтобы установить его постоянно и в масштабах всей системы (все пользователи, все процессы), добавьте переменную set в /etc/environment:
sudo -H gedit /etc/environment
Этот файл принимает только такие назначения переменных, как:
VARNAME="my value"
Не используйте здесь ключевое слово export
.
Вам необходимо выйти из системы от текущего пользователя и снова войти в систему, чтобы произошли изменения переменных окружения.
Чтобы установить переменную окружения один раз, используйте команду export
в приглашении, а не в сценарии оболочки:
$ export THEVAR=/example
Переменная будет установлена до конца сеанса оболочки или до тех пор, пока не будет снята.
Чтобы устанавливать переменную окружения каждый раз, используйте команду export
в файле .bashrc
(или соответствующем файле инициализации для вашей оболочки).
Чтобы установить переменную окружения из сценария, используйте команду export
в сценарии, а затем source
сценария. Если вы выполните сценарий, он не будет работать.
Объяснение разницы между созданием и выполнением см. в этом ответе: https://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-and-sourcing-a-bash-script/176788#176788.
Чтобы навсегда добавить новую переменную окружения в Ubuntu (проверено только в 14.04), выполните следующие действия:
sudo -H gedit /etc/environment
.FOO=bar
, то просто напишите FOO=bar
в новой строке.Чтобы сделать окружающую среду в/var изменения сохраняются после того, как сценарий завершен, вы должны использовать ѕоигсебыл ./script.sh или сокращенное обозначение источника, то ".&я, как . ./script.sh
Источник будет выполнять команды в сценарий, как будто вы ввели их в... так это же изменить некоторые аспекты сценария, таких, как исключение... так что если ваш скрипт проверяет что-то и решает покинуть если false, например, с помощью вызова выход ' 0
, это будет расторгнуть действующий терминал / раковины сессии.
Если вы делаете вещи через скрипт, один простой способ задать среде постоянно переменных ставится ниже заявление в скрипте,
if [[ ! -d "$MyVar" ]]; then
export MyVar="abc"
echo 'export MyVar="abc"' >> ~/.bashrc
fi
Если вам нужно evaluage выражения, как pwd, вы можете использовать это, например,
echo "export EIGEN_ROOT=\"$(pwd)/eigen\"" >> ~/.bashrc
Я знаю, что это'ы довольно поздно, но если вы хотите добавить переменную окружения для всех пользователей (например, использование Ява) - вы можете сделать следующее:
Откройте файл/etc/Баш.bashrc с помощью нано (вы можете использовать любой редактор, я не предпочитаю ВИМ, как это'ы худшее, когда дело доходит до удобства для пользователя - ничего личного).
Добавьте в файл:
экспорт ВАР=путь
экспортировать переменную PATH=$PATH: в/бин
3) (лучше, если вы можете подпрыгнуть коробки) - или просто открыть новый сеанс SSH и подтвердите клавишей
ОКР' команда.
Но если вы хотите, чтобы у каждого пользователя есть отдельная настройка для этого, вы должны внести изменения (по сценарию) к .файл bashrc
в ~/.bashrc и
(или в/Home/$/ пользователь
если вы новичок в Linux системах)