Suatu ketika seorang teman saya (yang merupakan pengguna Unix / Linux berpengalaman) mengatakan kepada saya bahwa pengaturan shell root untuk sesuatu selain sh (yaitu bash atau zsh) dapat menimbulkan masalah, karena beberapa skrip mungkin berasumsi bahwa shell adalah sh dan melakukan sesuatu yang aneh .
Namun, saya pikir Ubuntu memiliki shell root default yang ditetapkan untuk bash, dan Gentoo juga menggunakan bash. Adakah yang bisa mematahkan mitos itu?
bash
. Saya mem-boot dalam mode pengguna tunggal untuk memperbaikinya, tetapi hanya berhasil karena/bin/sh
masih ditautkan denganFBSD
garpubourne
dan bukanbash
.zsh
dan entah bagaimana/usr
rusak saya akan punya masalah? tapi sistem saya harus/bin/sh
menunjuk ke/bin/bash
danbash
dirinya sendiri, mengapa tidak akansh
terpengaruh?zsh
tidak boleh di/usr/bin/
jika itu salah diinstal. semua kerang harus dalam/bin
/bin
tetapi menyimpan beberapa file/usr/share
. Saya juga menyatakan dengan jelas bahwa masalahnya adalah saat login saat boot (ketika beberapa layanan gagal).Seharusnya tidak menjadi masalah.
File skrip shell menyandikan shell mana yang dieksekusi secara eksplisit. Itu dikodekan di baris pertama atau program lain atau skrip menjalankan shell tertentu dan memberikan skrip shell sebagai argumen.
Satu-satunya program yang dapat saya pikirkan yang menggunakan informasi shell akun pengguna (selain proses login) adalah procmail. Benar-benar lucu jika pengguna Anda telah menetapkan sebagai shell / bin / false di server surat ... Tapi Anda biasanya tidak menjalankan procmail sebagai root.
Kandidat lain adalah garis-garis di crontab root. Saya tidak tahu kebijakan crond mana shell yang digunakan.
sumber
Skrip yang ditulis untuk bourne shell sebagian besar akan berjalan melawan BASH atau ZSH atau $ foo tanpa masalah.
Pada banyak sistem Linux, sh asli tidak diinstal, melainkan symlink terhadap / bin / bash.
Jika beberapa skrip hanya "berasumsi" bahwa shell secara eksplisit sh, mereka harus ditulis ulang. Ada mekanisme shebang untuk memilih penerjemah mana yang dibutuhkan skrip Anda. Jika ini adalah sh, skrip harus dimasukkan
#!/bin/sh
sebagai baris pertama.Pengaturan shell default Anda seharusnya tidak relevan dalam konteks ini.
sumber
Saya tidak berpikir mengubah shell root akan menyebabkan masalah. Saya sepertinya ingat beberapa unices (mungkin beberapa varian BSD?) Yang memiliki tcsh sebagai shell default untuk root.
Login root jarang terjadi. Biasanya, Anda akan masuk ke akun Anda sendiri dan kemudian su atau sudo untuk me-root.
Yang penting adalah bahwa shell root harus memiliki sesedikit mungkin dependensi agar dapat digunakan dalam konteks perbaikan sistem. Sebagai contoh, adalah ide bagus untuk memiliki shell root yang terhubung secara statis; beberapa distribusi mengirimkan versi bash atau zsh atau sash yang terhubung secara statis (sebuah shell dengan banyak utilitas standar bawaan). Namun ini tidak begitu penting jika sistem Anda dapat dengan mudah di-boot dari CD cadangan atau drive USB.
sumber
Cangkang masuk pengguna tidak memengaruhi proses boot. Anda dapat mengatur shell ini untuk apa pun yang Anda inginkan. Tidak semua sistem memiliki bash dan mereka berfungsi dengan baik. Juga jika itu
/usr/bin/zsh
itu diinstal salah, semua kerang sistem harus dalam/bin
. Anda tidak boleh, bagaimanapun, berubah/bin/sh
untuk menunjuk ke sesuatu selain dari default (kecuali Anda tahu apa yang Anda lakukan) karena banyak skrip#!/bin/sh
yang biasanya menunjuk ke bash, padahal seharusnya memiliki#!/bin/bash
karena bashism dan perilaku lain yang tidak akan bekerja padazsh
ataudash
.sumber
bash
danzsh
berada di/bin
Saya memiliki bash sebagai shell default untuk root. Saya menggunakan zsh untuk beberapa waktu, tetapi kemudian kembali ke bash . Cangkang apa yang Anda gunakan, tidak masalah.
Ini hanya masalah, jika lebih dari satu orang memiliki akses root. Dalam hal ini Anda dapat memilih 'common denominator' yang biasanya bash, karena ini adalah shell yang paling banyak digunakan.
sumber
Mengenai Solaris / illumos, Solaris Root Shell Mini-FAQ menyebutkan
Jadi, ya, jika Anda menggunakan Solaris atau illumos, boleh saja menggunakan kerang selain
sh
.sumber