Как установить переменную окружения для всех в моей системе Linux? - PullRequest
116 голосов
/ 29 октября 2009

Могу ли я иметь определенные настройки, которые являются универсальными для всех моих пользователей?

Ответы [ 8 ]

98 голосов
/ 29 октября 2009

Как и /etc/profile, о котором упоминали другие, некоторые системы Linux теперь используют каталог /etc/profile.d/; любые файлы .sh будут получены из /etc/profile. Немного аккуратнее хранить в этих файлах пользовательскую среду, чем просто редактировать /etc/profile.

38 голосов
/ 29 октября 2009

человек 8 pam_env

man 5 pam_env.conf

Если все службы входа в систему используют PAM , и все службы входа имеют session required pam_env.so в соответствующих файлах конфигурации /etc/pam.d/*, то для всех сеансов входа в систему будут установлены некоторые переменные среды, указанные в pam_env ' S файл конфигурации.

В большинстве современных дистрибутивов Linux это все по умолчанию - просто добавьте нужные глобальные переменные среды в /etc/security/pam_env.conf.

Это работает независимо от оболочки пользователя и также для графических входов в систему (если xdm / kdm / gdm / entry / & hellip; настроен так).

37 голосов
/ 25 апреля 2016

Если ваш LinuxOS имеет этот файл:

/etc/environment

Вы можете использовать его для постоянной установки переменных среды для всех пользователей.

Извлечено из: http://www.sysadmit.com/2016/04/linux-variables-de-entorno-permanentes.html

16 голосов
/ 29 октября 2009

Удивительно, но в Unix и Linux фактически нет места для установки глобальных переменных среды. Лучшее, что вы можете сделать, - это организовать для каждой конкретной оболочки инициализацию для конкретного сайта.

Если вы введете его в /etc/profile, это позаботится о вещах для большинства пользователей оболочки, совместимых с posix. Это, вероятно, "достаточно хорошо" для некритических целей.

Но любой с оболочкой csh или tcsh не увидит его, и я не верю, что csh имеет глобальный файл инициализации.

7 голосов
/ 29 октября 2009

Некоторые интересные выдержки из man-страницы bash:

Когда bash вызывается как интерактивный оболочка для входа или неинтерактивная оболочка с опцией --login, это сначала читает и выполняет команды из файл /etc/profile, если этот файл существует. Прочитав этот файл, он ищет ~/.bash_profile, ~/.bash_login и ~/.profile, в этом порядок, а также читает и выполняет команды от первого, который существует и удобочитаемый. Опция --noprofile может использоваться при запуске оболочки подавить это поведение.
...
Когда интерактивная оболочка, которая не является логином оболочка запущена, bash читает и выполняет команды из /etc/bash.bashrc и ~/.bashrc, если эти файлы существуют. Это может быть запрещено с помощью опции --norc. Опция --rcfile file заставит bash для чтения и выполнения команд из файл вместо /etc/bash.bashrc и ~/.bashrc.

Итак, взгляните на /etc/profile или /etc/bash.bashrc, эти файлы являются подходящими местами для глобальных настроек. Поместите в них что-то вроде этого, чтобы установить переменную окружения:

export MY_VAR=xxx
4 голосов
/ 16 декабря 2013

Использование PAM отлично.

# modify the display PAM
$ cat /etc/security/pam_env.conf 
# BEFORE: $ export DISPLAY=:0.0 && python /var/tmp/myproject/click.py &
# AFTER : $ python $abc/click.py &
DISPLAY  DEFAULT=${REMOTEHOST}:0.0 OVERRIDE=${DISPLAY}
abc   DEFAULT=/var/tmp/myproject
2 голосов
/ 29 октября 2009

Каждый процесс, работающий под ядром Linux, получает собственную уникальную среду, которую он наследует от своего родителя. В этом случае родитель будет либо самой оболочкой (порождающей вложенную оболочку), либо программой 'login' (в типичной системе).

Поскольку среда каждого процесса защищена, нет способа «внедрить» переменную среды в каждый запущенный процесс, поэтому даже если вы измените оболочку по умолчанию .rc / profile, она не вступит в силу до тех пор, пока каждый процесс выходит и перезагружает настройки запуска.

Загляните в / etc /, чтобы изменить переменные запуска по умолчанию для любой конкретной оболочки. Просто осознайте, что пользователи могут (и часто делают) изменять их в своих индивидуальных настройках.

Unix предназначен для подчинения пользователю в определенных пределах.

NB : Bash - это не оболочка only в вашей системе. Обратите особое внимание на то, на что в действительности указывает символическая ссылка / bin / sh. Во многих системах это может быть dash , что (по умолчанию, без специального вызова) ПОЗВОЛЬНО правильно. Поэтому вам следует позаботиться об изменении обоих значений по умолчанию, иначе сценарии, начинающиеся с / bin / sh, не наследуют ваши глобальные значения по умолчанию. Точно так же старайтесь избегать синтаксиса, который понимает только bash при редактировании обоих, иначе avoiding bashisms.

0 голосов
/ 20 декабря 2017
  1. Скачать jdk с помощью wget
  2. найдите путь Java, используя $ which java он покажет вам, где на самом деле хранится JAVA т.е. / usr / lib / jvm / java-8-openjdk-amd64 // bin / java
  3. Скопируйте вышеуказанный путь, т.е. / usr / lib / jvm / java-8-openjdk-amd64 /
  4. Теперь откройте .bashrc с помощью редактора nano, т.е. nano .bashrc
  5. Добавьте путь в файл .bashrc, например, JAVA_HOME, используя экспорт cammand, и сохраните файл, например, export JAVA_HOME = / usr / lib / jvm / java-8-openjdk-amd64 / и экспорт PATH = $ JAVA_HOME / bin: $ PATH
  6. Выполнить $ source ~ / .bashrc
  7. $ echo $ PATH

Ваш путь установлен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...