Saya memiliki server Debian yang dihosting. Ketika saya masuk melalui ssh, saya disambut dengan lingkungan sh. Bagaimana cara mengubahnya jadi saya mulai di lingkungan bash?
Saya memiliki server Debian yang dihosting. Ketika saya masuk melalui ssh, saya disambut dengan lingkungan sh. Bagaimana cara mengubahnya jadi saya mulai di lingkungan bash?
Jawaban:
Sebagai pengguna biasa, Anda dapat mengubah shell login default menggunakan chshperintah. Berikut ini sebuah contoh:
chsh -s /bin/bash
Opsi lain adalah menggunakan usermod sebagai root:
usermod -s /bin/bash username
adduser, itu harus mengaturnya ke bash secara default. Defaultnya dikonfigurasi dalam /etc/adduser.conf. Jika tidak, tentukan shell secara eksplisit dengan useradd.
Anda mengedit di /etc/passwdmana entri terakhir adalah shell default. Buat itu /bin/bash.
Atau, Anda dapat mengubah mengubah default sistem untuk /bin/shtidak menjadi bash.
/bin/shmenjadi /bin/dash. Dan untuk apa itu layak, dua jawaban lainnya identik dan mencapai tujuan yang sama dengan cara yang berbeda. Terserah.
/etc/passwdsangat tidak disarankan. Kesalahan pengeditan dapat merusak login untuk semua pengguna, membutuhkan media pemulihan atau boot ke mode pengguna tunggal untuk diperbaiki. Ada alat seperti usermoduntuk mengubah /etc/passwd.
/etc/passwd.
/bin/bashsebagai /bin/shsama dijalankan dengan --posix, yang mungkin memiliki hasil yang tidak diinginkan.
/bin/bashshell saya selama bertahun-tahun di semua mesin. Anda membutuhkan argumen yang lebih konkret.
Cangkang sistem default /bin/shdi rilis Ubuntu terbaru dikonfigurasikan menjadi /bin/dash. Dengan hanya menjalankan perintah berikut:
sudo dpkg-reconfigure dash
Anda dapat mengubahnya kembali ke default lama /bin/bash.
Dengan ini, Anda dapat mencapai efek yang diinginkan bashsebagai shell interaktif tanpa mengubah pengaturan pengguna apa pun (tidak chshatau usermod), dan itu akan berfungsi untuk semua pengguna yang saat ini memiliki shell yang diatur ke /bin/sh.
Hanya ada satu kelemahan kecil untuk ini: Waktu boot Ubuntu mungkin sedikit meningkat, karena dashmembutuhkan lebih sedikit memori untuk dimuat dan sedikit lebih cepat untuk dijalankan (tidak heran - fitur ini sangat terbatas). Tapi saya pikir ini akan agak sulit untuk mengukur efek ini, terutama untuk lingkungan hosting.
Juga, terkadang menjengkelkan melihat skrip shell yang gagal berfungsi dengan baik karena mereka menggunakan beberapa bashfitur canggih yang tidak didukung oleh dash. Menggunakan resep ini akan memastikan ini tidak akan terjadi.
Untuk informasi lebih lanjut, lihat wiki Ubuntu tentang masalah ini .
/bin/shdigunakan sebagai interpreter untuk skrip shell yang kompatibel dengan POSIX - itu belum tentu merupakan shell interaktif terbaik; jika Anda ingin bashmenjadi shell sistem Anda, Anda harus mengatur shell login pilihan Anda menggunakan chshatau adduserpanggilan yang tepat . menggunakan dpkg-reconfigureadalah pilihan yang buruk jika userA ingin zsh dan userB ingin bash dan keduanya bersikeras memiliki / bin / sh sebagai shell default mereka.
zsh, dan userB untuk bashmereka akan memilikinya. Jika userC dikonfigurasi untuk sh, ia akan memiliki bash, yang merupakan standar Ubuntu saat ini untuk pengguna baru
dpkg-reconfigure zshdiatur zshsebagai / bin / sh, dan kemudian dpkg-reconfigure dashditetapkan dashsebagai / bin / sh yang merupakan semacam jalan buntu; Saya terutama mengatakan bahwa lebih disukai untuk mengatur shell login ke shell yang ingin digunakan daripada melalui lingkaran untuk membuat / bin / sh shell login yang baik.
dpkg-reconfigure dashbisa shmenunjukkan bash, bukan melumpuhkan dash. Semua kerang lainnya masih utuh.
Untuk kasus di mana Anda mencoba menggunakan akun bersama (untuk alasan apa pun) dan tidak dapat mengubah shell default, maka Anda dapat menjalankannya
ssh -t <user@hostname> bash -l
Jika Anda perlu menjaga lingkungan Anda dari beberapa shell lain, maka Anda dapat menjalankan shell itu terlebih dahulu; sebagai contoh
ssh -t <user@hostname> ksh -c bash -l
-lpilihan?