Anda tidak boleh mengurai /etc/passwd
secara langsung. Anda mungkin berada di sistem dengan pengguna jarak jauh, dalam hal ini mereka tidak akan masuk /etc/passwd
. The /etc/passwd
File mungkin berada di tempat lain. Dll
Jika Anda memerlukan akses langsung ke basis data pengguna, gunakan getent
.
$ getent passwd phemmer
phemmer:*:1000:4:phemmer:/home/phemmer:/bin/zsh
$ getent passwd phemmer | awk -F: '{ print $6 }'
/home/phemmer
Namun ada juga cara lain yang tidak melibatkan penguraian:
$ user=phemmer
$ eval echo "~$user"
/home/phemmer
The ~
operator dalam shell mengembang ke direktori home user tertentu ini. Namun kita harus menggunakan eval
karena perluasan variabel $user
terjadi setelah ekspansi ~
. Jadi dengan menggunakan eval
tanda kutip ganda, Anda secara efektif memperluas $user
pertama, lalu menelepon eval echo "~phemmer"
.
Setelah Anda memiliki direktori home, tempel sederhana /.ssh
hingga akhir.
$ sshdir="$(eval echo "~$user/.ssh")"
$ echo "$sshdir"
/home/phemmer/.ssh