Apakah variabel lingkungan $ HOME selalu diset pada sistem Linux?

13

Dengan asumsi mesin menjalankan kernel Linux, sesi menggunakan Bash shell dan semuanya menggunakan konfigurasi default (tidak ada pengguna yang membuat perubahan pada file konfigurasi), dapatkah kita mengasumsikan bahwa $HOMEvariabel lingkungan selalu disetel?

yanhan
sumber
nobodytidak punya rumah! (Ini nobody, pengguna.)
devnull
1
@devnull tidak memiliki rumah (mis. memiliki direktori home yang ditentukan yang tidak ada), tidak berarti $ HOME env. variabel tidak dapat diatur. Jika diset, itu tidak perlu menunjuk ke direktori yang ada atau ke entri rumah di/etc/passwd
Anthon

Jawaban:

16

Iya. The POSIX spesifikasi membutuhkan OS untuk menetapkan nilai untuk $ HOME:

HOME
Sistem akan menginisialisasi variabel ini pada saat login menjadi pathname dari direktori home pengguna. Lihat pwd.h.

Bagaimana dengan pengguna nobody?

# su - nobody
No directory, logging in with HOME=/
$ echo $HOME
/

Meskipun nobodytidak memiliki rumah asli, HOMEdiatur ke direktori root.

John1024
sumber
Ini bukan shell yang mengatur HOME- tidak ada shell umum yang melakukan kecuali zsh. Ini adalah program yang mencatat Anda (termasuk metode seperti cron).
Gilles 'SO- stop being evil'