Змінні середовища, що посилаються * in * / etc / environment?


19

Нещодавно я виявив /etc/environment, що здається більш стандартним способом налаштування простих змінних оточуючих середовищ, ніж сценарії, але мені було цікаво, чи існує спосіб повернення змінних середовища у файл / etc / environment.

Тобто я маю таке:

JAVA_HOME="/tools/java"
GRAILS_HOME="/tools/grails"
GROOVY_HOME="/tools/groovy"
GRADLE_HOME="/tools/gradle"
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"

Якщо я спробую додати $JAVA_HOME/binвизначення PATH, однак я отримую $ JAVA_HOME / bin, а не інтерпольовану змінну. Щоб виправити це, я створюю Environment.sh в profile.d, щоб додати /binзаписи до шляху, але це здається неохайним і неорганізованим.

Чи є спосіб відновити змінні середовища в / etc / environment?

Відповіді:


13

/etc/environmentФайл зчитується pam_envмодулем PAM . Він підтримує лише прості пари ключ-значення, без підстановки на правій частині.

Якщо ви хочете створити значення за допомогою підстановок або інших розширень оболонок, вам потрібно пройти оболонку. /etc/profile(або файл у /etc/profile.d) - це правильне місце для них. Це традиційне місце ( /etc/environmentце відносно недавнє нововведення в історії систем Unix), і в цьому, звичайно, немає нічого неохайного. Основна перевага /etc/environmentполягає в тому, що він дозволяє встановлювати змінні середовища навіть за допомогою методів входу, які не включають оболонку, або для користувачів, які використовують не-Bourne-оболонку, але вони не є поширеними на практиці.


Без заміни ви закінчилися безліччю надмірностей /etc/environment, я вдався /etc/profile, дякую за вашу пропозицію.
SAFX

2

Документація на Ubuntu робить це неможливим. АЛЕ, є відповідь.

ВІДПОВІДЬ : Створюйте стійкі змінні середовища в системі/etc/.bashrc

JAVA_HOME="/tools/java"
...
PATH="$JAVA_HOME:$PATH"  

Докладніше:
Ось додаткові відомості з документації до змінних довкілля .
Офіційна рекомендація - використовувати /etc/environment, як ви намагалися. Проблема в тому, що цей файл не є файлом сценарію. Іншими словами, ви не можете використовувати змінні в оголошеннях змінних.

Документація продовжується з двома іншими файлами "Не рекомендується"
/etc/profileта /etc/bash.bashrc.

/etc/profile"не викликає файлу /etc/bash.bashrc". Тож замість цього вибирайте

/etc/bash.bashrc тому що "Ubuntu налаштовано за замовчуванням для виконання цього файлу кожного разу, коли користувач вводить оболонку або середовище робочого столу."


Я оновив EnvironmentVariables за погодженням з деякими розробниками Ubuntu, тому цих "не рекомендованих" заяв більше немає.
Gunnar Hjalmarsson

"кожен раз, коли користувач вводить оболонку". що робити, коли немає користувача, щоб ввести оболонку? Мені потрібні змінні середовища для моїх автоматизованих користувачів, які запускають програмне забезпечення при запуску. Наприклад, у мене є лише 6 рядків конфігурації проксі. Що мені робити з цим?
eis
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.