Pertama, saya tahu itu ~/
adalah direktori home. CDing ~
atau ~/
membawa saya ke direktori home.
Namun, cd ~X
membawaku ke tempat khusus, di mana X
sepertinya ada sesuatu.
Dalam bash, jika saya menekan " cd ~
" dan menekan tab, itu menunjukkan sekumpulan kemungkinan ~X
opsi seperti ~mail
dan ~postgres
dan ~ssh
. Pergi ke folder-folder itu dan melakukan a pwd
menunjukkan kepada saya bahwa folder-folder ini tidak ada di direktori home; mereka ada di mana-mana.
Mereka bukan alias. Saya sudah memeriksanya. Mereka bukan env.
variabel, atau mereka membutuhkan $
.
Apa yang mengatur tautan ini, dan di mana saya dapat menemukan di mana ini disetel?
Jawaban:
Ini adalah fitur Bash yang disebut " ekspansi tilde ". Ini adalah fungsi dari shell, bukan OSnya. Anda akan mendapatkan perilaku yang berbeda dengan csh, misalnya.
Untuk menjawab pertanyaan Anda tentang dari mana informasi itu berasal: direktori home Anda berasal dari variabel
$HOME
(tidak peduli apa yang Anda simpan di sana), sementara rumah pengguna lain diambil secara real-time menggunakangetpwent()
. Fungsi ini biasanya dikontrol oleh NSS ; jadi dengan nilai default ditarik keluar/etc/passwd
, meskipun dapat dikonfigurasi untuk mengambil informasi menggunakan sumber yang diinginkan, seperti NIS, LDAP atau database SQL.Ekspansi Tilde lebih dari sekadar pencarian direktori home. Berikut ringkasannya:
dirs
dan~1
,,~-1
dll., digunakan sehubungan denganpushd
danpopd
.sumber
~+
? sepertinya tidak berguna.Itu adalah direktori home dari pengguna. Coba
cd ~(your username)
, misalnya.sumber
Apakah mereka adalah direktori beranda pengguna
/etc/passwd
? Layanan seperti postgres, sendmail, apache, dll., Membuat pengguna sistem yang memiliki direktori home seperti pengguna biasa.sumber
Mereka adalah para pengguna. Periksa Anda
/etc/passwd
.cd ~username
membawa Anda ke direktori utama pengguna tersebut.sumber
Di komputer saya, karena cara saya menyiapkan sesuatu, melakukan:
Yang pertama memperhatikan nilai variabel lingkungan
$HOME
; Saya sengaja mengatur saya$HOME
ke sistem file lokal daripada sistem file yang dipasang di NFS. Yang kedua membaca dari file kata sandi (kira-kira; NIS sedikit memperumit banyak hal) dan menemukan bahwa file kata sandi mengatakan direktori home saya/u/jleffler
dan perubahan ke direktori itu.Hal yang mengganggu adalah kebanyakan perangkat lunak berperilaku seperti di atas (dan spesifikasi POSIX untuk shell memerlukan perilaku ini). Saya menggunakan beberapa perangkat lunak (dan saya tidak punya banyak pilihan untuk menggunakannya) yang memperlakukan informasi dari file kata sandi sebagai nilai $ HOME saat ini, yang sebenarnya salah.
Menerapkan ini ke pertanyaan - seperti yang ditunjukkan orang lain, '
cd ~x
' pergi ke direktori home pengguna 'x', dan lebih umum lagi, setiap kali ekspansi tilde dilakukan,~x
berarti direktori home pengguna 'x' (dan itu adalah kesalahan jika pengguna 'x' tidak ada).Mungkin perlu disebutkan bahwa:
Saya tidak dapat langsung menemukan kegunaan untuk '
~+
', kecuali Anda melakukan hal-hal aneh dengan memindahkan symlink di jalur yang mengarah ke direktori saat ini.Anda juga bisa melakukan:
Artinya sama dengan
~-
.sumber
cd ~+
: Anda berpotensi dapat menggunakannya untuk memeriksa apakah direktori Anda saat ini masih ada - meskipun itu cara yang sangat tidak ortodoks untuk melakukannya.Ekspansi Tilde di Bash:
http://bash-hackers.org/wiki/doku.php/syntax/expansion/tilde
sumber
Jika Anda menggunakan
autofs
maka ekspansi mungkin sebenarnya berasal dari/etc/auto.home
(atau serupa untuk distro Anda). Misalnya,/etc/auto.master
penampilan saya seperti:dan
/etc/auto.home
terlihat seperti:sumber
Mungkin Anda melihat pengguna OpenDirectory / ActiveDirectory / LDAP "dipasang secara otomatis" ke direktori beranda Anda.
Di * nix,
~
akan beralih ke direktori home Anda. Demikian juga~X
akan menyelesaikan ke 'pengguna X'.Mirip dengan automount untuk direktori, OpenDirectory / ActiveDirectory / LDAP digunakan di lingkungan yang lebih besar / perusahaan untuk memasang direktori pengguna secara otomatis. Pengguna ini mungkin orang yang sebenarnya atau mereka dapat menjadi akun mesin yang dibuat untuk menyediakan berbagai fitur.
Jika Anda mengetik, ~TabAnda akan melihat daftar pengguna di komputer Anda.
sumber