Bagaimana cara saya memulai di bash ketika ssh'ing ke server saya?
29
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?
usermod bekerja seperti pesona. Apakah ada cara untuk mengaturnya ke default untuk bash ketika saya menambahkan pengguna baru, atau apakah saya harus menjalankan perintah setiap kali?
Jika Anda menggunakan adduser, itu harus mengaturnya ke bash secara default. Defaultnya dikonfigurasi dalam /etc/adduser.conf. Jika tidak, tentukan shell secara eksplisit dengan useradd.
jordanm
5
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.
Yo, ada apa dengan downvote drive-by? Misalnya Ubuntu tidak default /bin/shmenjadi /bin/dash. Dan untuk apa itu layak, dua jawaban lainnya identik dan mencapai tujuan yang sama dengan cara yang berbeda. Terserah.
Dirk Eddelbuettel
4
Pengeditan manual /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.
jordanm
1
Omong kosong. Menjalankan Linux sejak '94 di sini. Tidak pernah rusak /etc/passwd.
Dirk Eddelbuettel
2
Senang mendengar Anda sangat berhati-hati. Tidak semua orang memilikinya. Catatan lain update Anda, meluncurkan /bin/bashsebagai /bin/shsama dijalankan dengan --posix, yang mungkin memiliki hasil yang tidak diinginkan.
jordanm
Begini, saya sudah menjadi pengembang / pengelola Debian sejak 1995 juga. Kami dulu menggunakan bash sebagai default, kami beralih ke shell yang lebih sederhana karena berbagai alasan. Saya telah menggunakan /bin/bashshell saya selama bertahun-tahun di semua mesin. Anda membutuhkan argumen yang lebih konkret.
Dirk Eddelbuettel
2
Anda perlu mengedit profil pengguna Anda, Anda dapat melakukan ini secara langsung dengan mengedit /etc/passwdfile, atau Anda dapat menggunakan usermodperintah untuk melakukannya untuk Anda. Sintaks yang Anda cari terlihat seperti ini:
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 .
Anda harus memisahkan use case: /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.
umläute
jika userA dikonfigurasikan secara eksplisit ke 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
mvp
tentu, tetapi solusi Anda menyarankan sesuatu seperti 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.
umläute
Saya hanya mengatakan itu dpkg-reconfigure dashbisa shmenunjukkan bash, bukan melumpuhkan dash. Semua kerang lainnya masih utuh.
mvp
1
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
Jawaban:
Sebagai pengguna biasa, Anda dapat mengubah shell login default menggunakan
chsh
perintah. Berikut ini sebuah contoh:Opsi lain adalah menggunakan usermod sebagai root:
sumber
adduser
, itu harus mengaturnya ke bash secara default. Defaultnya dikonfigurasi dalam/etc/adduser.conf
. Jika tidak, tentukan shell secara eksplisit denganuseradd
.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.sumber
/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 sepertiusermod
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.Anda perlu mengedit profil pengguna Anda, Anda dapat melakukan ini secara langsung dengan mengedit
/etc/passwd
file, atau Anda dapat menggunakanusermod
perintah untuk melakukannya untuk Anda. Sintaks yang Anda cari terlihat seperti ini:sumber
Cangkang sistem default
/bin/sh
di rilis Ubuntu terbaru dikonfigurasikan menjadi/bin/dash
. Dengan hanya menjalankan perintah berikut: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 (tidakchsh
atauusermod
), 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 olehdash
. Menggunakan resep ini akan memastikan ini tidak akan terjadi.Untuk informasi lebih lanjut, lihat wiki Ubuntu tentang masalah ini .
sumber
/bin/sh
digunakan sebagai interpreter untuk skrip shell yang kompatibel dengan POSIX - itu belum tentu merupakan shell interaktif terbaik; jika Anda inginbash
menjadi shell sistem Anda, Anda harus mengatur shell login pilihan Anda menggunakanchsh
atauadduser
panggilan yang tepat . menggunakandpkg-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 untukbash
mereka akan memilikinya. Jika userC dikonfigurasi untuksh
, ia akan memilikibash
, yang merupakan standar Ubuntu saat ini untuk pengguna barudpkg-reconfigure zsh
diaturzsh
sebagai / bin / sh, dan kemudiandpkg-reconfigure dash
ditetapkandash
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
bisash
menunjukkanbash
, bukan melumpuhkandash
. 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
Jika Anda perlu menjaga lingkungan Anda dari beberapa shell lain, maka Anda dapat menjalankan shell itu terlebih dahulu; sebagai contoh
sumber
-l
pilihan?Baik
chsh
atauusermod
sedang bekerja untuk saya, tetapi saya menemukan bahwa Anda dapat melakukan ini melalui Putty.Pergi ke
Connection > SSH
dan aturRemote command
kebash
.Perhatikan bahwa Anda tidak akan dapat ke
exit
shell default Anda, itu hanya akan menutup koneksi.sumber