Я использую Ubuntu 11.04. Я использую терминал для запуска сеанса bash и хочу добавить переменную окружения:
$r@hajt:~$ env THEVAR=/example
Но это не работает. Он показывает все переменные с THEVAR быть последним, но еще один вызов, чтобы env
не показывать THEVAR
anymore- env | grep THEVAR
возвращает ничего.
Аналогично, сценарии с помощью export ( export THEVAR=/example
) или других назначений переменных ( THEVAR=/example
) не добавляют переменную окружения.
Я знаю, что делаю что-то не так, я знаю, что это должно быть что-то простое, но я просто не могу найти что.
ОБНОВЛЕНИЕ: реальный смысл моего вопроса был следующим: https://stackoverflow.com/questions/496702/can-a-shell-script-set-environment-variables-of-the-calling-shell
(В любом случае, я выберу наиболее проголосовавший ответ и оставлю отредактированный заголовок - это было не то, что я спрашивал)
env
запускает программу в измененной среде, затем отклоняет все изменения.
THEVAR=/example
?Ответы:
Чтобы установить переменную только для текущей оболочки:
Чтобы установить его для текущей оболочки и всех процессов, запущенных из текущей оболочки:
Чтобы установить его навсегда для всех будущих сеансов bash, добавьте такую строку в ваш
.bashrc
файл в вашем$HOME
каталоге.Чтобы установить его постоянно, и для всей системы (все пользователи, все процессы) добавьте переменную set в / etc / environment:
Этот файл принимает только переменные назначения, такие как:
Не используйте
export
ключевое слово здесь.Вы должны выйти из текущего пользователя и войти снова, чтобы произошли изменения переменных среды.
источник
Shell config files such as ~/.bashrc, ~/.bash_profile, and ~/.bash_login are often suggested for setting environment variables. While this may work on Bash shells for programs started from the shell, variables set in those files are not available by default to programs started from the graphical environment in a desktop session.
help.ubuntu.com/community/EnvironmentVariablesecho $myvar
Чтобы установить переменную среды один раз, используйте
export
команду в приглашении, а не в сценарии оболочки:Переменная будет установлена до конца сеанса оболочки или до сброса.
Чтобы каждый раз устанавливать переменную среды, используйте
export
команду в.bashrc
файле (или соответствующий файл инициализации для вашей оболочки).Чтобы установить переменную среды из сценария, используйте
export
команду в сценарии, а затемsource
сценарий. Если вы выполните скрипт, он не будет работать.Для объяснения разницы между поиском и исполнением см. Этот ответ: https://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-and-sourcing-a- баш-скрипт / 176788 # 176788
источник
Чтобы окончательно добавить новую переменную среды в Ubuntu (протестировано только в 14.04), выполните следующие действия:
sudo -H gedit /etc/environment
например, если вы хотите добавить
FOO=bar
, просто напишитеFOO=bar
в новой строкеисточник
sudo gedit
(см. Askubuntu.com/questions/270006/… ) иchmod 777
. Последнее никогда не должно быть сделано в файле конфигурации системы.if
илиtest
)Foo="bar"
?Чтобы изменения среды / var сохранялись после завершения сценария, вы должны использовать
source ./script.sh
или сокращенную запись для источника ".", Например. ./script.sh
Source выполнит команды в сценарии, как если бы вы их набрали ... поэтому он меняет некоторые аспекты сценария, например, выходит ... поэтому, если ваш сценарий что-то проверяет и решает выйти, если, например, false, через вызов
exit 0
он прервет ваш текущий сеанс терминала / оболочки.источник
Если вы делаете что-то с помощью скрипта, один простой способ навсегда установить переменную окружения - поместить в ваш скрипт оператор ниже,
Если вам нужно вычислить выражения типа pwd, вы можете использовать это, например,
источник
Я знаю, что уже довольно поздно, но если вы хотите добавить переменную окружения для всех пользователей (например, использование JAVA) - вы можете сделать следующее:
1) Открывать
/etc/bash.bashrc
с помощью nano (вы можете использовать любой редактор, я не предпочитаю VIM, так как это хуже всего, когда дело касается дружелюбия пользователя - ничего личного).2) Добавить в файл:
export VAR=path export PATH=$PATH:/bin
3) (Лучше, если вы можете сбросить флажок) - или просто открыть новый сеанс SSH и подтвердить с помощью команды `env '.НО, если вы хотите, чтобы у каждого пользователя была отдельная настройка для этого, вы должны внести изменения (по сценарию) в
.bashrc
файл~/.bashrc
(или,/home/$USER/
если вы новичок в системах Linux)источник