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

Как другие сказали, это dd если Вы находитесь в нормальном режиме (нажмите ESC) для обеспечения, Вы находитесь в нормальном режиме, но по умолчанию, Вы будете. Вы, возможно, нашли, что vi не действует, поскольку Вы ожидали бы, что редактор будет действовать. Это довольно уникально, и те уникальные функции делают это чрезвычайно мощным и быстрым для работы с. Если Вы хотите узнать больше, можно работать vimtutor в командной строке, и Вы получите быстрое (возможно, ценность часа чтения/экспериментирования) учебное руководство на основах того, как использовать его.

Теперь, можно использовать редактора с более знакомым интерфейсом. Большинство систем имеет nano. Можно ввести nano a.txt открыть Ваш файл в nano. Можно даже пойти шаг вперед - нет никакой причины, необходимо использовать на терминальном основанного редактора. Так как Вы упомянули, что использовали (Ctrl+Alt ++ T), и это - ярлык по умолчанию в Ubuntu и некоторых других дистрибутивах Gnome, таким образом, я был бы удивлен, не имели ли Вы gedit установленный. В командной строке попробовать gedit a.txt и Вы получите графического редактора.

146
22.05.2015, 02:07
6 ответов

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

  • При использовании удара, пепла, ksh или некоторой другой оболочки стиля Границы, можно добавить

    ABC="123"; export ABC
    

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

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

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

  • При установке zsh как оболочки входа в систему использовать ~/.zprofile вместо ~/.profile.

  • При использовании tcsh добавить

    setenv ABC "123"
    

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

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

115
27.01.2020, 19:28
  • 1
    Поведение по умолчанию su user должен изменить владение текущей оболочки к аргументу имени пользователя, при хранении корневого каталога и среды вызывающего абонента. Для ввода оболочки таким способом как, чтобы стать новым пользователем и получить все их экологические настройки ($PATH, $HOME, $ABC, и т.д.), необходимо передать - как первый аргумент su. su - username выполнит то, что Вы просите. –  Tim Kennedy 28.09.2011, 14:35
  • 2
    Ожидайте: под чем Вы подразумеваете "вышедший для укоренения"? В любом случае создание 'su' не инициализирует оболочку. Вам нужно 'su -' (см. man su) –  Matteo 28.09.2011, 14:43
  • 3
    Почему сделал Вас su во-первых? Не сделал Вас, просто создают корневое .profile это не может использоваться пользователем? –  rozcietrzewiacz 28.09.2011, 14:50
  • 4
    @acid это - то, что, должен был сделать. Вопрос, что получено, когда Вы входите в систему. Чтобы проверить что, выйдите из системы сначала. –  rozcietrzewiacz 28.09.2011, 14:55
  • 5
    Поскольку .profile читается всеми Совместимыми с границей оболочками, Вы не должны писать синтаксис Bash в том файле. В частности, export VARIABLE=value потребности, которые будут пересмотрены в VARIABLE=value; export VARIABLE. –  tripleee 06.06.2013, 09:56

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

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

Затем необходимо выяснить, какие точечные файлы эта оболочка обычно читала бы:

man $shell

Ярлык, который мог бы работать, должен перечислить те точечные файлы, которые содержат имя оболочки:

ls ~/.*${shell}*

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

echo .bashrc

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

Когда дело доходит до объявления переменной "постоянно", обратите внимание, что это только расширяется на сессию. Нет никакого способа получить доступ к значению переменной без сессии, таким образом, оно не имеет никакого значения за пределами одного. Если Вы имеете в виду "только для чтения", который является зависимым оболочки, и в 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
9
27.01.2020, 19:28

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

export ABC="123"

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

env

и/или

env | grep ABC

Для добавления его постоянно добавьте это к Вашему ~/.bashrc файл.

export ABC="123"
5
27.01.2020, 19:28
  • 1
    , Он хочет знать горячий определять его постоянно, т.е. в который файл поместить определение. работа –  Matteo 28.09.2011, 14:08
  • 2
    Doesnt. После того как я выхожу из системы, переменной не стало. Мне нужен он через сессии –   28.09.2011, 14:08
  • 3
    , которые Вы имеете в виду permenate и нет permenently Взгляд :D –  whoami 28.09.2011, 14:09
  • 4
    на редактирование для bashrc –  whoami 28.09.2011, 14:12
  • 5
    , что permenate? Вы имеете в виду permanent? использование –  SSH This 10.04.2013, 18:49

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

ABC="123"

Теперь переменная ABC будет доступна от всех сеансов пользователя. Для тестирования переменной производит, сначала обновляют команду использования переменной среды

source /etc/environment

и выполненный echo $ABC.

48
27.01.2020, 19:28
  • 1
    +1 для исходной команды. Это отсутствовало во всех ответах –  Nerrve 29.03.2013, 16:16
  • 2
    Будьте осторожны это /etc/environment не поддерживает полный синтаксис удара, что-то, что я выяснил твердый путь. Например, помещение PATH="/usr/bin:/usr/sbin" и затем выполнение PATH="$PATH:/foo/bar" на следующей строке не будет работать –  user2428118 13.05.2016, 17:20
  • 3
    Не уверенный, если это - персональная проблема или что, но я должен был перезагрузить свою ОС после установки этого в /etc/environment, даже если я перезапустил терминал удара или ввел source /etc/environment. Таким образом, если у Вас есть проблемы, где переменная среды не увековечивает, попытайтесь перезагрузить. –  Blairg23 11.01.2018, 03:04

Точная команда:

echo 'export ABC = "123"' >> ~/.profile
2
27.01.2020, 19:28
  • 1
    Точно?  Seriously? оболочка  What (a) чтения ~/.profile и (b) предоставляет пространство прежде и после =? –  G-Man Says 'Reinstate Monica' 28.03.2017, 20:20

Лучший способ, который мне помог, — изменить файл.bashrc в оболочке BASH.

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

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

    export <VARIABLE> = "<ANY PATH/VALUE you want>"
    

    например:export HOME = "/home/user/"

    Не забудьте использовать "", так как использование ' 'не будет работать, и ваш файл bashrc сообщит об ошибке при поиске.

  3. источник в текущем сеансе.

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

1
20.08.2021, 13:32

Теги

Похожие вопросы