Ini menjengkelkan saya. Saya melihat beberapa saran (semua menggunakan file dan sintaks yang berbeda) dan tidak ada yang bekerja.
Bagaimana cara menetapkan variabel lingkungan untuk pengguna tertentu? Saya sedang memeras debian. Apa sintaks yang tepat yang harus saya masukkan ke file untuk membuat ABC = "123"?
environment-variables
path
Gilles
sumber
sumber
.bashrc
adalah tempat utama untuk itu..bash_profile
berisi sesuatu seperti[[ -f ~/.bashrc ]] && . ~/.bashrc
.Jawaban:
Anda harus meletakkan deklarasi di file inisialisasi shell Anda:
Jika Anda menggunakan bash, ash, ksh atau shell Bourne-style lainnya, Anda dapat menambahkan
dalam
.profile
file Anda (${HOME}/.profile
). Ini adalah situasi default pada sebagian besar instalasi Unix, dan khususnya pada Debian.Jika shell login Anda adalah bash, Anda dapat menggunakan
.bash_profile
(${HOME}/.bash_profile
) atau.bash_login
sebagai gantinya.Catatan: Jika salah satu dari file-file ini ada dan shell login Anda adalah bash,
.profile
tidak dibaca ketika Anda login lebih dari ssh atau pada konsol teks, tetapi mungkin masih dibaca bukan.bash_profile
jika Anda masuk dari GUI. Juga, jika tidak ada.bash_profile
, maka gunakan.bashrc
.Jika Anda telah menetapkan zsh sebagai shell login Anda, gunakan
~/.zprofile
sebagai ganti~/.profile
.Jika Anda menggunakan tcsh, tambahkan
dalam
.login
file (${HOME}/.login
)jika Anda menggunakan shell lain lihat manual shell cara mendefinisikan variabel lingkungan dan file mana yang dieksekusi pada startup shell.
sumber
su user
adalah untuk mengubah kepemilikan shell saat ini ke arg nama pengguna, sambil menjaga direktori home dan lingkungan pengguna panggilan. Untuk memasukkan shell sedemikian rupa untuk menjadi pengguna baru, dan mendapatkan semua pengaturan lingkungan mereka ($ PATH, $ HOME, $ ABC, dll) Anda harus memberikan a - sebagai argumen pertama untuk su.su - username
akan mencapai apa yang Anda minta.man su
)su
di tempat pertama? Bukankah Anda baru saja membuat milik root.profile
yang tidak dapat digunakan oleh pengguna?.profile
dibaca oleh semua shell yang kompatibel dengan Bourne, Anda tidak boleh menulis sintaks Bash dalam file itu. Secara khusus,export VARIABLE=value
perlu direactored menjadiVARIABLE=value; export VARIABLE
.Gunakan
/etc/environment
file untuk mengatur variabel lingkungan. Kemudian tambahkan baris berikut di dalam/etc/environment
file.Sekarang variabel ABC akan dapat diakses dari semua sesi pengguna. Untuk menguji output variabel, segarkan dulu variabel lingkungan menggunakan perintah
dan lari
echo $ABC
.sumber
/etc/environment
tidak mendukung sintaks bash penuh, sesuatu yang saya temukan dengan cara yang sulit. Misalnya, menempatkanPATH="/usr/bin:/usr/sbin"
dan kemudian melakukanPATH="$PATH:/foo/bar"
pada baris berikut tidak akan berhasil/etc/environment
, bahkan jika saya me- restart terminal bash atau mengetiksource /etc/environment
. Jadi, jika Anda mengalami masalah ketika variabel lingkungan tidak bertahan, coba reboot.Ini adalah prosedur umum yang dapat Anda gunakan untuk hampir semua shell. Dalam hal apa pun, Anda harus tahu shell mana yang biasanya akan digunakan pengguna untuk login:
Maka Anda harus mencari file dot mana yang biasanya dibaca oleh shell ini:
Cara pintas yang mungkin berfungsi adalah mendaftar file-file dot yang berisi nama shell:
Jika Anda ingin memeriksa apakah salah satu file benar-benar dibaca saat login, Anda cukup mencetak nama file di masing-masing, misalnya:
Saat masuk, Anda harus melihat file mana yang sedang dibaca, dan Anda dapat memutuskan mana yang akan dimodifikasi. Berhati-hatilah agar Anda tidak mencoba menggunakan
echo "$0"
atau serupa, karena nilai$0
tergantung pada bagaimana shell memproses file-dot, dan bisa menyesatkan.Ketika datang untuk mendeklarasikan variabel "secara permanen", perhatikan bahwa ini hanya meluas ke sesi. Tidak ada cara untuk mengakses nilai variabel tanpa sesi, jadi tidak ada artinya di luar satu. Jika Anda maksud "read-only", itu tergantung pada shell, dan di Bash Anda dapat menggunakan:
apakah sudah memiliki nilai, atau
untuk menetapkannya secara bersamaan. Tidak semua shell memiliki fitur ini.
Untuk mendeklarasikan variabel di sebagian besar shell, Anda harus menggunakan nama variabel (
[A-Za-z_][A-Za-z0-9_]*
), diikuti oleh tanda sama dengan (dan tidak ada spasi di sekitar tanda sama), lalu nilai (lebih disukai dikutip kecuali nilainya sederhana[A-Za-z0-9_]+
). Sebagai contoh:sumber
Gunakan ekspor.
Untuk memeriksa apakah sudah diatur, gunakan
dan / atau
Untuk menambahkannya secara permanen, tambahkan ini ke
~/.bashrc
file Anda .sumber
permenate
dan bukanpermenently
: Dbashrc
permenate
? maksudmupermanent
?Perintah yang tepat adalah:
sumber
~/.profile
dan (b) memungkinkan ruang sebelum dan sesudah=
?Cara terbaik yang bekerja untuk saya adalah memodifikasi file .bashrc di BASH shell.
gunakan ini misalnya:
tambahkan baris ini:
misalnya:
export HOME = "/home/user/"
Ingatlah untuk menggunakan
""
karena menggunakan' '
tidak akan berfungsi dan file bashrc Anda akan melaporkan kesalahan saat sumber.sumber itu di sesi saat ini.
Saya juga mencoba untuk memodifikasi file / etc / environment tetapi tidak memungkinkan saya untuk membuat variabel lingkungan baru dan ketika saya membuatnya, itu meminta kesalahan bahwa variabel yang ditentukan tidak ditemukan.
sumber