Bagaimana cara membuat Bash shell default saya di Ubuntu?


101

Saya memiliki .bash_profiledi direktori home saya, tetapi tidak bisa dijalankan saat login. Jika saya melakukan yang berikut, maka hal-hal tampaknya seperti yang saya harapkan:

ssh myhost
bash
source ~/.bash_profile

Tapi biasanya itu semua terjadi saat login. Pikiran?


3
Pastikan juga Anda tidak memiliki ~/.profileatau ~/.bash_login, karena hanya satu dari ketiganya yang bersumber. (Saya lupa urutan persisnya.)
grawity

3
Mengapa Anda memiliki pertanyaan berbeda dalam judul dan satu lagi berbeda di tubuh tulisan Anda?
pabouk

Jawaban:


170

Menggunakan:

chsh

Masukkan kata sandi Anda dan nyatakan jalur ke shell yang ingin Anda gunakan.

Untuk Bash itu /bin/bash. Untuk Zsh itu /usr/bin/zsh.


15
+1 - tidak yakin mengapa OP memutuskan bahwa mengedit file kata sandi adalah pilihan yang lebih baik, tetapi ini adalah jawaban terbaik
kdgregory

1
Ya mengalahkan saya untuk itu, ini adalah cara standar.
John T

1
Dan di ubuntu jalur ke shell yang ingin Anda gunakan adalah ... / bin / bash (dan / bin / sh tidak sama)
Harry Wood

49
Atau Anda dapat menggunakansudo chsh -s /bin/bash username
Oleg Vaskevich

7
Anda harus keluar dan masuk kembali untuk melihat perubahan ini.
Neil Traft

37

Di atas jawaban akira, Anda juga dapat mengedit file / etc / passwd Anda untuk menentukan shell default Anda.

Anda akan menemukan garis seperti contoh ini:

john:x:1000:1000:john,,,:/home/john:/bin/sh

Shell ditentukan di akhir.


8
Lebih baik menggunakan perintah 'chsh' seperti yang disarankan oleh akira - lebih sedikit kesempatan untuk mengacaukan sesuatu karena kesalahan.
Lars Haugseth

5
belum lagi 'chsh' tersedia ketika Anda tidak dapat menulis ke / etc / passwd
quack quixote

1
Tetapi jika Anda memiliki akses untuk memodifikasi /etc/passwddan Anda berhati-hati, jawaban John adalah memanfaatkan alat yang disediakan sistem.
AJP

3
Anda harus keluar dan masuk kembali untuk melihat perubahan ini.
Neil Traft

2
Jika Anda menjalankan server tanpa kata sandi pengguna - menyediakan akses hanya melalui kunci ssh publik / pribadi ... itu juga masuk akal. chsh memerlukan kata sandi.
Keith John Hutchison

4

Anda mungkin memeriksa program terminal Anda. Mungkin dikonfigurasi untuk menjalankan / bin / sh daripada / bin / bash

Bash mengeksekusi .bash_profile hanya untuk sesi login. .bashrc dieksekusi untuk semua sesi bash, tidak hanya sesi login. Coba sumber .bash_profile dari .bashrc (hindari ketergantungan melingkar!) Atau konfigurasi program terminal Anda untuk menjalankan / bin / bash -l sebagai program shell.


2
program terminal tidak ada hubungannya dengan masalah karena itu adalah sshd pada mesin jarak jauh, yang memunculkan shell baru.
akira

2

Salah satu alternatif adalah mengubah nama skrip startup Anda menjadi .profile. File ini sedang sumber oleh sebagian besar kerang Unix .


2

Aktifkan bash:

$ /bin/bash

Ganti shell untuk pengguna:

$ sudo usermod -s /bin/bash username

dimana:

  -s, --shell SHELL             new login shell for the user account

2
(1) Apa yang Anda maksud dengan "aktifkan bash"? (2) Pengguna ingin mengubah shell loginnya sendiri pada sistem remote. Mengapa Anda menganggap bahwa ia memiliki sudoakses pada sistem itu? Mengapa Anda memberikan instruksi untuk mengganti shell login pengguna lain?
G-Man

Menggunakan chsh (seperti yang disarankan di atas) tidak berhasil untuk saya. Perintah ini berhasil!
Per Lindberg

1

Untuk menjadikan cangkang apa pun sebagai bawaan Anda, pastikan dulu cangkang itu dipasang dan dikenali di komputer Anda dengan melihat isi /etc/shells:

$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/usr/bin/fish

Kemudian gunakan chshuntuk mengganti shell Anda:

$ sudo chsh -s /usr/bin/bash $(whoami) # or sudo chsh -s /bin/bash $(whoami)

Referensi

  1. https://linux.die.net/man/1/cat
  2. https://linux.die.net/man/1/whoami
  3. https://linux.die.net/man/5/shells
  4. https://linux.die.net/man/1/chsh

0

Tidak ada informasi yang cukup dalam pertanyaan Anda untuk saya katakan dengan pasti, tetapi saya telah menemukan masalah yang sama sebelumnya. Dengan anggapan Anda sudah mendapatkan / bin / bash diset di entri kata sandi Anda, itu mungkin cara terminal Anda diluncurkan.

Jika Anda mencoba meluncurkan terminal GUI, katakan gnome-terminalAnda mungkin mengharapkan shell untuk membaca file startup bash Anda. Namun, ini tidak terjadi pada Ubuntu dan mungkin sistem lain secara default.

Cara saya memperbaikinya di Ubuntu adalah mengedit preferensi gnome-terminal, dan mengatur perintah startup menjadi bash -l. -lkependekan dari --login. Ini memberitahu bash ke startup sebagai shell login, yang menyebabkannya memuat skrip startup seperti yang Anda dapatkan ketika masuk melalui ssh.

Saya yakin ada alasan yang bagus untuk menjadi seperti ini, tapi saya menemukan itu mengejutkan dan sedikit lebih menyebalkan ketika saya berbagi profil yang sama di seluruh sistem linux, cywgin dan macos.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.