Mengubah shell default di Linux [tertutup]

318

Bagaimana mungkin mengganti shell standar? The envperintah saat mengatakan:

SHELL=/bin/tcsh

dan saya ingin mengubahnya ke Bash.

mahmood
sumber
4
Ini adalah pertanyaan yang bagus, tetapi mungkin lebih tepat untuk situs Linux QA.
BradleyDotNET
6
atur di / etc / passwd
resultsway

Jawaban:

415

Coba perintah linux chsh.

Perintah terperinci adalah chsh -s /bin/bash. Ini akan meminta Anda memasukkan kata sandi. Shell login default Anda /bin/bashsekarang. Anda harus keluar dan masuk kembali untuk melihat perubahan ini.

Berikut ini dikutip dari halaman manual:

Perintah chsh mengubah shell login pengguna. Ini menentukan nama perintah login awal pengguna. Pengguna normal hanya dapat mengubah shell login untuk akunnya sendiri, superuser dapat mengubah shell login untuk akun apa pun

Perintah ini akan mengubah shell login default secara permanen.

Catatan: Jika akun pengguna Anda jauh seperti pada otentikasi Kerberos (mis. Perusahaan RHEL) maka Anda tidak akan dapat menggunakannya chsh.

Summer_More_More_Tea
sumber
10
chsh: can only change local entries; use ypchsh instead. Maka ypchsh tidak punya -spilihan
mahmood
10
@ShaktiMalik Saya percaya file konfigurasinya /etc/passwd, tapi saya tidak mengeceknya.
Summer_More_More_Tea
30
Anda harus keluar dan masuk kembali untuk melihat perubahan ini.
Neil Traft
22
Dalam kasus saya, saya memiliki akses root tetapi tidak ingin mengacaukan konfigurasi apa pun pada host yang sebenarnya. Saya menambahkan exec /bin/bashuntuk ~/.profiledan ini memungkinkan saya untuk login langsung ke pesta tanpa membuat perubahan ke server. (Kerang default asli hanya /bin/sh)
Paul Nelson Baker
2
@BCqrstoO Terima kasih untuk ini. Tetapi bagaimana jika Anda mengetik exitbash? Apakah Anda akan logout server secara langsung atau hanya keluar dari bash dan ke sh dan yang lain exitdiperlukan untuk logout server?
Summer_More_More_Tea
148

Anda dapat mengubah file passwd secara langsung untuk pengguna tertentu atau menggunakan perintah di bawah ini

chsh -s /usr/local/bin/bash username

Kemudian keluar dan masuk

Gurun Es
sumber
8
Mungkin ide yang bagus untuk dicoba which bashsebelum menjalankan perintah di atas; jarak tempuh Anda mungkin berbeda di setiap lokasi. Dalam kasus saya, ditemukan di/bin/bash
Martin Haeberli
Saya juga dapat menambahkan bahwa, chshperintah adalah bagian dari util-linuxpaket; dan chsh -s $(which bash) $USERharus menghasilkan yang sama seperti di atas.
Ada juga -lopsi: "cetak daftar kerang".
Betlista
3
itu chsh -s /bin/bash usernameuntukku
Salvatorelab
Terima kasih! Ini membantu saya ketika mencoba mengubahnya untuk pengguna yang berbeda
Tobias Feil
18

Anda harus memiliki 'kerangka' di suatu tempat di /etc, mungkin /etc/skeleton, atau periksa pengaturan default, mungkin /etc/defaultatau sesuatu. Itu adalah skrip yang mendefinisikan variabel lingkungan standar yang ditetapkan selama login.

Jika itu hanya untuk akun Anda sendiri: periksa file (tersembunyi) ~/.profiledan ~/.login. Atau hasilkan mereka, jika tidak ada. Ini juga dievaluasi oleh proses login.

arkascha
sumber
5
Plus 1 untuk menjawab pertanyaan secara spesifik (THE Default Shell). Di Red Hat Linux, ia ditentukan dalam/etc/default/useradd
geedoubleya
@geedoubleya Bisakah Anda menentukan apa perbedaan default dan shell login?
Betlista
1
Hai @Betlista Shell default adalah shell yang digunakan untuk shell login pengguna baru ketika mereka dibuat kecuali shell tertentu disediakan sebagai argumen.
geedoubleya