Ketika saya ingin meminta kata sandi dalam sebuah bash
skrip, saya melakukan itu:
read -s
... tetapi ketika saya menjalankan bash
dalam mode POSIX, dengan sh
, -s
opsi ditolak:
$ read -s
sh: 1: read: Illegal option -s
Bagaimana saya secara aman meminta input dengan perintah yang sesuai dengan POSIX?
Jawaban:
Perhatikan bahwa untuk cangkang (mksh) di mana
printf
tidak dibangun, kata sandi akan muncul dengan jelas dips
output (untuk beberapa mikrodetik) atau mungkin muncul di beberapa log audit jika semua perintah perintah dengan parameternya diaudit.sumber
cat
+ heredoc menjadi alternatif yang lebih amanprintf
?REPLY="$(...)"
tidak membahayakan (kecuali untuk penyorotan sintaksis SE) tetapi tidak diperlukanstty
pengaturan lama .read -s
tidak dalam POSIX. Jika Anda ingin menggunakan POSIX, gunakan perintahstty -echo
.stty
danecho
parameternya didefinisikan dalam POSIX.Ini akan bekerja pada semua shell yang sesuai dengan POSIX.
Sumber
sumber
stty echo
kembali - jika pengguna menjadi bingung dan menekan control-C selamaread PASSWORD
bagian .