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 chsh
perintah. 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/passwd
mana entri terakhir adalah shell default. Buat itu /bin/bash
.
Atau, Anda dapat mengubah mengubah default sistem untuk /bin/sh
tidak menjadi bash.
/bin/sh
menjadi /bin/dash
. Dan untuk apa itu layak, dua jawaban lainnya identik dan mencapai tujuan yang sama dengan cara yang berbeda. Terserah.
/etc/passwd
sangat tidak disarankan. Kesalahan pengeditan dapat merusak login untuk semua pengguna, membutuhkan media pemulihan atau boot ke mode pengguna tunggal untuk diperbaiki. Ada alat seperti usermod
untuk mengubah /etc/passwd
.
/etc/passwd
.
/bin/bash
sebagai /bin/sh
sama dijalankan dengan --posix
, yang mungkin memiliki hasil yang tidak diinginkan.
/bin/bash
shell saya selama bertahun-tahun di semua mesin. Anda membutuhkan argumen yang lebih konkret.
Cangkang sistem default /bin/sh
di 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 bash
sebagai shell interaktif tanpa mengubah pengaturan pengguna apa pun (tidak chsh
atau 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 dash
membutuhkan 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 bash
fitur 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/sh
digunakan sebagai interpreter untuk skrip shell yang kompatibel dengan POSIX - itu belum tentu merupakan shell interaktif terbaik; jika Anda ingin bash
menjadi shell sistem Anda, Anda harus mengatur shell login pilihan Anda menggunakan chsh
atau adduser
panggilan yang tepat . menggunakan dpkg-reconfigure
adalah 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 bash
mereka akan memilikinya. Jika userC dikonfigurasi untuk sh
, ia akan memiliki bash
, yang merupakan standar Ubuntu saat ini untuk pengguna baru
dpkg-reconfigure zsh
diatur zsh
sebagai / bin / sh, dan kemudian dpkg-reconfigure dash
ditetapkan dash
sebagai / 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 dash
bisa sh
menunjukkan 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
-l
pilihan?