Apakah mungkin untuk mendefinisikan ulang direktori home? misalnya untuk /ext1/username
bukannya /home/username
, yaitu memperluas ~
ke direktori lain (yang bertentangan dengan mengubah direktori home aktual di mana file home pengguna berada).
(Pertanyaan ini sebagian besar bersifat akademis, karena sepertinya praktik buruk untuk melakukannya. Saya juga tidak punya pilihan dalam hal menggunakan csh
, meskipun telah membaca Top 10.)
~
menjadi sesuatu selain direktori home yang sebenarnya?~
ke direktori lain (tidak, jika saya memahami alternatif Anda dengan benar, mengubah di mana direktori home semua pengguna berada). Saya tidak menyadari bahwa~
itu ditafsirkan sebagai bentuk pendek$HOME
, seperti yang dijelaskan @michas dalam jawabannya.Jawaban:
Tilde
~
ditafsirkan oleh shell Anda. Shell Anda akan ditafsirkan~
sebagai bentuk singkat dari$HOME
.Coba
(echo ~; HOME=foo; echo ~)
. Ini pertama-tama harus mencetak direktori home asli Anda dan kemudian "foo", saat Anda mengaturnya$HOME
.Nilai default dari
$HOME
berasal dari konfigurasi sistem Anda. Gunakangetent passwd
untuk mendaftar semua pengguna yang dikenal dan direktori home mereka. Bergantung pada konfigurasi sistem Anda, entri tersebut mungkin berasal dari/etc/passwd
atau layanan direktori jarak jauh.Jika Anda hanya ingin mendefinisikan ulang sementara direktori home Anda, cukup atur yang lain
$HOME
.Jika Anda ingin mengubahnya secara permanen, Anda harus mengubah entri passwd, misalnya dengan mengedit secara manual
/etc/passwd
.sumber
csh
variabel yang relevan adalah$home
(huruf kecil), dan Anda tidaksetenv HOME /ext1/acheong
bisa — Anda hanya bisaset home=/ext1/acheong
, dan itu berhasil bagi saya.)usermod -d
vipw
(atau GUI apa pun yang disediakan OS Anda) daripada mengedit/etc/passwd
secara langsung. Pengeditan langsung berisiko merusak file, yang mungkin sulit dipulihkan.Nilai yang digunakan
~
ditentukan dari nilai yang Anda dapatkan dari database administrasi (getent passwd
), biasanya dalam/etc/passwd
file, untuk setiap direktori home pengguna yang ditentukan di sana.Kolom ke-6 dalam file ini adalah tempat nilai yang digunakan saat seseorang mengetik
cd ~
berasal.nsswitch
Anda dapat melihat sistem apa yang akan digunakan untuk direktori home pengguna menggunakan perintah
getent passwd
:"Basis data" yang menyediakan ini dikendalikan melalui penyelesai sistem Anda, yang didefinisikan dalam
/etc/nsswitch.conf
.File di atas berarti
/etc/passwd
, tetapi "basis data" dapat berasal dari LDAP, NIS, atau lokasi lain melalui jaringan, misalnya.Pindah / Definisi Ulang?
Untuk melakukan operasi ini agak sulit setelah akun dibuat. Jika Anda membuat akun dari awal, maka sepele untuk mendefinisikan kembali lokasi pengguna dari direktori home mereka. Saat menjalankan
useradd
perintah, Anda dapat menentukan lokasi yang akan digunakan untuk direktori home pengguna.Contoh
kutipan dari halaman manual
Untuk akun yang ada?
Ini menjadi lebih dari operasi bedah karena sering kali jalur direktori home pengguna dimasukkan secara statis dalam file konfigurasi, menjadikannya lebih rumit.
Contoh
Ini perlu diperbaiki, atau Anda harus memberikan tautan dari
/home/sam
ke lokasi baru/ext1/sam
,.Pindah ketika "database" tidak
/etc/passwd
Jika sistem mendapatkan direktori home dari LDAP, NIS, dll. Maka Anda perlu mengatur relokasi dalam sistem tersebut, dan berkoordinasi dengan memindahkan file dari
/home/sam
ke/ext1/sam
.Referensi
sumber
Jika alasannya adalah untuk menyebar pengguna di beberapa sistem file, Anda juga bisa menggunakan
automounter
. Dan bahkan memungkinkan Anda untuk memiliki direktori "basis" yang berbeda untuk pengguna Anda.sumber