Bagaimana cara menetapkan ikan sebagai shell default?

110

Apakah ada cara untuk mengatur ikan sebagai shell default di ubuntu netbook remix? Saya memasukkan .bashrc saya untuk menjalankan ikan, yang berfungsi dengan baik, tetapi ubuntu mengenalinya sebagai ikan yang berjalan di dalam bash, yang berarti bahwa ketika saya mencoba untuk menutup shell itu memperingatkan saya bahwa tugas masih berjalan.

Itu tidak muncul sebagai aplikasi baru, jadi saya tidak bisa menyematkannya ke bilah saya seperti aplikasi normal.

Xodarap
sumber

Jawaban:

151

Anda dapat mengatur ikan sebagai shell default Anda dengan menjalankan

chsh -s `which fish`

Untuk melakukannya untuk pengguna lain, cukup tambahkan nama pengguna di akhir perintah, dan gunakan sudo.

Kemudian logout dan kembali.

(Untuk mengembalikannya bash, Anda harus menggunakan sintaksis Ikan tentu saja, seperti ini chsh -s (which bash))

ajmitch
sumber
3
Ini sepertinya tidak berhasil untuk saya. Itu tidak memberikan kesalahan, tetapi sepertinya tidak berfungsi, bahkan jika saya baru saja membuka tab baru. Adakah pikiran?
Xodarap
16
Anda mungkin harus keluar & kembali - saya baru mencobanya di mesin virtual bersih & berhasil.
ajmitch
1
Bagaimana Anda mengaturnya kembali?
knutole
7
Jangan secara tidak sengaja menjalankan perintah ini sudoatau Anda akan mengganti shell root.
Stephen Niedzielski
2
Atau chsh -s (which fish)dari dalam ikan.
Wtower
30
usermod -s /usr/bin/fish username

Harus dijalankan sebagai root.

Ini akan mengubah shell secara permanen untuk pengguna yang ditentukan.

sweetfa
sumber
1
Saya tahu ini bukan Ubuntu, tapi saya ingin berkomentar: Saya menggunakan CentOS, dan saya mendapatkan Authentication Failedkesalahan saat mencoba mengganti shell dengan pengguna non-root dan setelah banyak mencari untuk mencoba dan mencari tahu, ini adalah satu-satunya hal itu berhasil. Terima kasih!
CWSpear
Ya itu akan bekerja pada sebagian besar rasa unix yang memiliki usermod dan ikan untuk cangkang, atau mengubah cangkang untuk rasa apa pun yang Anda inginkan
sweetfa
Saya melakukan itu dan sekarang terminal tidak memulai lagi. Saya mendapatkan "Ada kesalahan saat membuat proses anak untuk terminal ini", "Gagal menjalankan proses anak" / usr / bin / fish "(Kesalahan input / output)". Bagaimana saya bisa membatalkannya?
ptkato
Keluarkan perintah yang sama dengan root tetapi gunakan bash sebagai ganti ikan sebagai shell.
sweetfa
21

Saya baru saja menambahkan baris fishke akhir .bashrc.

Kyle D
sumber
1
Itu solusi paling sederhana dan terbaik, IMO;)
Ben Marten
9
Maaf, tetapi tidak efisien. :) Ini akan memuat kulit ikan Anda tetapi di atas bash Anda berjalan.
M. Junaid Salaat
1
Mengapa bash harus efisien? @ M.JunaidSalaat
codenamejames
Dari pandangan pertama ini sepertinya hack kotor, tetapi setelah beberapa saat menggunakan pc saya dengan ikan ditetapkan sebagai shell default dengan chsh saya kembali ke solusi ini. Beberapa program menganggap bahwa Anda menggunakan bash dan akan macet karena menggunakan sintaks bash pada ikan. Sejauh ini saya menghadapi masalah seperti itu di i3wm dan matlab.
Naheel
@codenamejames: Bukan berarti bash harus efisien, atau beberapa milidetik itu penting, tapi ini kasus tidak ada ruginya, jadi mengapa tidak melakukannya dengan benar? Terutama di sini di mana kami memberikan saran kepada orang lain. Kita harus tahu lebih baik
swalog
13

Saya setuju dengan itu chshadalah jawaban yang benar. Namun:

Jika Anda menjalankan chshdan mendapatkan kesalahan

/usr/local/bin/fish: non-standard shell

cukup tambahkan lokasi biner ikan ke /etc/shells.

Ditemukan di sini .

jackbravo
sumber
Ini perlu dilakukan di macOS Mojave.
Dodekeract
2

Di /etc/shells, tambahkan /usr/local/bin/fish:

# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/usr/local/bin/fish

Lalu chsh -s /usr/local/bin/fish.

Dorian
sumber