Как установить переменную окружения пользователя? (постоянно, не в сеансе)

Это меня раздражает. Я видел несколько предложений (все с использованием разных файлов и синтаксиса), и ни одно из них не сработало.

Как установить переменную окружения для определенного пользователя? Я на debian squeeze. Какой точный синтаксис я должен указать в файле, чтобы ABC = "123"?

Комментарии к вопросу (9)
Решение

Вы должны поместить объявление в файлы инициализации вашей оболочки:

  • Если вы используете bash, ash, ksh или другую оболочку в стиле Bourne, вы можете добавить

     ABC="123"; export ABC

в ваш файл .profile' (${HOME}/.profile'). Это ситуация по умолчанию в большинстве Unix установок, и в частности в Debian.

Если ваша оболочка входа - bash, вы можете использовать .bash_profile (${HOME}/.bash_profile) или .bash_login вместо этого.

Примечание: Если один из этих файлов существует и ваша оболочка входа - bash, .profile не будет прочитан при входе по ssh или на текстовой консоли, но он может быть прочитан вместо .bash_profile при входе из графического интерфейса. Также, если нет .bash_profile, то используйте .bashrc.

  • Если вы установили zsh в качестве оболочки для входа, используйте ~/.zprofile вместо ~/.profile.

  • Если вы используете tcsh, добавьте

     setenv ABC "123"

в файле .login (${HOME}/.login)

  • если вы используете другую оболочку, посмотрите в руководстве к оболочке, как определить переменные окружения и какие файлы выполняются при запуске оболочки.
Комментарии (12)

Файл использовать файл/etc/среды для настройки переменных среды. Затем добавьте следующую строку в файл/etc/окружающей среды`.

ABC="123"

Теперь Азбука перемеююый будет доступна от всех пользовательских сессий. Чтобы проверить выходной переменной сначала обновить переменную окружения с помощью команды

source /etc/environment

и запустить Эхо $букварь.

Комментарии (3)

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

path="$(grep $USER /etc/passwd | cut -d ':' -f 7)"
shell="$(basename -- "$path")"

Затем нужно выяснить, какие dot-файлы эта оболочка обычно читает:

man $shell

Короткий путь, который может сработать, это перечислить те dot-файлы, которые содержат имя оболочки:

ls ~/.*${shell}*

Если вы хотите проверить, действительно ли один из файлов читается при входе в систему, вы можете просто вывести имя файла в каждом из них, например:

echo .bashrc

Тогда при входе в систему вы увидите, какие файлы считываются, и сможете решить, какой из них следует изменить. Помните, что не следует пытаться использовать echo "$0" или подобное, потому что значение $0 зависит от того, как shell обрабатывает dot-файлы, и может ввести в заблуждение.

Когда речь идет об объявлении переменной "постоянно", обратите внимание, что это распространяется только на сессию. Нет способа получить доступ к значению переменной без сеанса, поэтому она не имеет никакого значения вне сеанса. Если вы имеете в виду "только для чтения", то это зависит от оболочки, и в Bash вы можете использовать:

declare -r VAR

если оно уже имеет значение, или

declare -r VAR=value

чтобы присвоить его одновременно. Не все оболочки имеют эту возможность.

Чтобы объявить переменную в большинстве оболочек, вы должны использовать имя переменной ([A-Za-z_][A-Za-z0-9_]*), за которым следует знак равенства (и без пробелов вокруг знака равенства), затем значение (желательно заключенное в кавычки, если только значение не является простым [A-Za-z0-9_]+). Например:

name="John Doe"
ip=127.0.0.1
HORRIBLE=1
Комментарии (0)

Используйте экспорт.

export ABC="123"

Чтобы проверить, установлен ли он, используйте

env

и/или

env | grep ABC

Чтобы добавить его на постоянной основе, добавьте это в файл ~/.bashrc.

export ABC="123"
Комментарии (6)

Точные команды:

echo 'export ABC = "123"' >> ~/.profile
Комментарии (1)

Лучший способ, который работал для меня изменения .файл bashrc в оболочке bash.

используйте этот например:

  1. открыть свой .файл bashrc
  2. добавьте эту строку:

экспорт <переменная> = " в<любой путь/значение>"и

например : вывоз дома = на " ьquot пользователей/дома//&;

Не забывайте использовать в "" в качестве использовать&#39; &#39; не будет работать и ваш файл bashrc будет сообщать об ошибке при поиске.

  1. источник в текущей сессии.

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

Комментарии (0)