Saya baru-baru ini menemukan /etc/environment
, yang tampaknya merupakan cara yang lebih standar untuk menyiapkan variabel lingkungan sederhana daripada skrip, tetapi saya ingin tahu apakah ada cara untuk mereferensikan kembali variabel lingkungan di file /etc/environment.
Artinya, saya punya ini:
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"
Jika saya mencoba menambahkan $JAVA_HOME/bin
untuk definisi PATH, bagaimanapun, saya mendapatkan $JAVA_HOME/bin, dan bukan variabel interpolasi. Untuk mengatasinya, saya membuat environment.sh di profile.d untuk menambahkan /bin
entri ke jalur, tetapi ini tampaknya tidak rapi dan tidak teratur.
Apakah ada cara untuk mereferensikan variabel lingkungan di /etc/environment?
Jawaban Terbaik
/etc/environment
file dibaca oleh pam_env
modul PAM. Ini hanya mendukung pasangan nilai kunci sederhana, tanpa substitusi di sisi kanan.
Jika Anda ingin membangun nilai dengan substitusi atau ekspansi shell lainnya, Anda harus melalui shell. /etc/profile
(atau file di /etc/profile.d
) adalah tempat yang tepat untuk ini. Ini adalah tempat tradisional (/etc/environment
adalah inovasi yang relatif baru, dalam sejarah sistem unix), dan tentu saja tidak ada yang ceroboh dalam menggunakannya. Manfaat utama /etc/environment
adalah memungkinkan variabel lingkungan disetel bahkan dengan metode login yang tidak melibatkan shell atau untuk pengguna yang menggunakan shell non-Bourne, tetapi ini tidak umum dalam praktiknya.