Bagaimana cara mengatur shell default saya di Mac?

190

Saya tidak suka mengetik ulang ikan setiap kali saya memulai terminal. Saya ingin fishaktif secara default. Bagaimana saya bisa mengatur shell ikan sebagai shell default saya di Mac?

Léo Léopold Hertz 준영
sumber

Jawaban:

31

Ini berlaku untuk MacOS Sierra 10.12.5 (16F73) dan mungkin beberapa versi MacOS terbaru dan yang akan datang.

  1. chshtidak cukup untuk mengubah shell default. Pastikan Anda menekan Command+ ,ketika terminal Anda terbuka dan ubah opsi 'Kerang terbuka dengan' menjadi 'Kerangka masuk default.'

  2. Jika terjadi bash, pastikan Anda mengeksekusi echo $BASH_VERSIONuntuk mengonfirmasi bahwa Anda menjalankan versi bash yang dimaksud. bash --versiontidak memberi Anda informasi yang benar.

Tushar Vazirani
sumber
3
Karena jawaban ini adalah jawaban yang diterima, mungkin alih-alih sebagai tambahan mungkin untuk jawaban lain , Anda dapat menjadikannya sebagai jawaban lengkap untuk menyertakan tambahan tersebut.
Jason R. Coombs
Ini dijawab dalam dokumen sekarang.
reergymerej
@ JasonR.Coombs Selesai.
Tushar Vazirani
1
Update: Sekarang kita dapat mengatur shell default di Preferencesdari Terminal.app . Lihat Jawaban ini oleh Pankaj.
Basil Bourque
Saya telah menyebutkan pintasan keyboard untuk preferensi.
Tushar Vazirani
242

1. sudo nano / etc / shells masukkan deskripsi gambar di sini

2. tambahkan / usr / local / bin / fish ke daftar shells Anda masukkan deskripsi gambar di sini

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

pengguna391339
sumber
2
Dan Anda harus mengubah Shell open with: Default login shellpengaturan Terminal.app
Tikhonov Alexander
77

Anda dapat menggunakan chsh untuk mengganti shell pengguna.

Jalankan kode berikut, misalnya, untuk mengubah shell Anda ke Zsh

chsh -s /bin/zsh

Seperti dijelaskan dalam manual ini, dan oleh Lorin, jika shell tidak diketahui oleh OS, Anda harus menambahkannya ke daftar yang diketahui: /etc/shells.

Aif
sumber
13
Mencoba dan mendapat chsh: /usr/local/bin/fish: non-standard shell Solusi adalah menambahkannya ke / etc / shells seperti dijelaskan oleh @ lorin-hochstein jawaban di bawah ini
lmsurprenant
dbright @ PowerMac: ~ $ chsh -s / Users / dbright / sys / bin / bash Mengganti shell untuk dbright. Kata sandi untuk dbright: chsh: / Pengguna / dbright / sys / bin / bash: shell non-standar dbright @ PowerMac: ~ $ ls -l / etc / shells -rw-r - r-- 1 root wheel 179 Sep 23 2007 / etc / shells
don bright
Hum, saya baru saja mencoba chsh yang berfungsi sebagai pengguna sederhana (tanpa -solah). Saya akan coba lagi nanti.
Aif
73

Dari Terminal:

  1. Tambahkan Fish ke /etc/shells, yang akan memerlukan kata sandi administratif:

    sudo echo /usr/local/bin/fish >> /etc/shells
    
  2. Jadikan Fish sebagai shell default Anda dengan chsh:

    chsh -s /usr/local/bin/fish
    

Dari System Preferences:

  1. Pengguna dan Grup → ctrl-klik Pengguna Saat Ini → Opsi Lanjutan ...

  2. Ubah shell Login ke /usr/local/bin/fish

    shell login

  3. Tekan OK, keluar dan masuk lagi

Paolo Moretti
sumber
8
Harus membuat sedikit tweak ke langkah 1. -sudo sh -c 'echo /usr/local/bin/fish >> /etc/shells'
purpletonic
Hanya cara lain melakukan hal yang sama @purpletonic disebutkanecho /usr/local/bin/fish | sudo tee -a /etc/shells
mroach
20

Berikut cara lain untuk melakukannya:

Dengan asumsi Anda menginstalnya dengan MacPorts, yang dapat dilakukan dengan melakukan:

sudo port install fish

Shell Anda akan berlokasi di /opt/local/bin/fish.

Anda perlu memberi tahu OSX bahwa ini adalah shell yang valid. Untuk melakukan itu, tambahkan jalur ini ke akhir /etc/shellsfile.

Setelah selesai, Anda dapat mengganti shell dengan masuk ke System Preferences -> Accounts. Klik pada Kunci untuk mengizinkan perubahan. Klik kanan pada akun, dan pilih "Opsi Lanjutan ...". Di bidang "Login shell", tambahkan path ke fish.

Lorin Hochstein
sumber
Terima kasih! ini bekerja hebat dan menjadikan ikan terminal default saya di mana-mana. hanya mengubahnya di terminal seperti salah satu jawaban lain membuat terminal meminta saya setiap kali saya menutup jendela dan chsh tidak bekerja untuk saya.
jasongregori
12

Satu-satunya hal yang berhasil bagi saya adalah kombinasi dari semua metode ini.

  1. Pertama saya harus menambahkan ikan ke /etc/shellsfile

  2. Lalu aku berlari chsh -s /usr/local/bin/fish

  3. Akhirnya, saya mengetik Command+ ,dan menambahkan /usr/local/bin/fishke jalur default di sana

Hanya setelah saya melakukan ketiga hal tersebut, ikan mulai bermunculan sebagai default untuk windows terminal baru.

quaintm
sumber
9

Mac OS X: Cara mengganti shell Terminal

Gumbo
sumber
2
Saya menyarankan untuk lebih memilih pendekatan ini dan tidak mengubah shell OSX default Anda. Saya sudah memiliki "pemasangan tanpa batas" di iWorks - misalnya - karena menginstal skrip yang menganggap Anda memiliki shell yang kompatibel dengan SH (bukan case untuk ZSH dalam kasus saya).
Cyber ​​Oliveira
8

Terminal.app > Preferences> General> Shells open with:>/bin/fish

  1. Buka terminal Anda dan tekan command+ ,(koma). Ini akan membuka jendela preferensi.
  2. Tab pertama adalah 'Umum'.
  3. Temukan pengaturan 'Kerang terbuka dengan' dan pilih opsi ke-2 yang membutuhkan jalur lengkap ke shell.
  4. Tempel tautan ke perintah ikan Anda, yang biasanya /usr/local/bin/fish.

Lihat screenshot ini di mana zshsedang ditetapkan sebagai default.

tangkapan layar untuk memasukkan <code> / bin / zsh </code> di preferensi Terminal.app

Saya menggunakan macOS Sierra . Juga berfungsi di macOS Mojave .

Pankaj
sumber
2
Akhirnya! Solusi yang berfungsi untuk pengguna non-sudo!
Ébe Isaac
7

Pada macOS Mojave saya harus melakukan hal berikut (menggunakan zsh sebagai contoh):

brew install zsh
sudo sh -c "echo $(which zsh) >> /etc/shells"
chsh -s $(which zsh)
MagicDude4Eva
sumber
Catatan: Anda dapat menggunakan metode ini untuk mendapatkan versi bash terbaru juga. stackoverflow.com/a/55011144/117471 Saya datang dengan kode yang hampir sama persis pada saya sendiri.
Bruno Bronosky
1
Tidak perlu menginstal zsh. Sudah hadir di macOS Mojave. Dibundel pada Mojave, dan default di Catalina.
Basil Bourque
5

Cara mendapatkan versi bash terbaru di macOS modern (diuji di Mojave).

brew install bash
which bash | sudo tee -a /etc/shells
chsh -s $(which bash)

Kemudian Anda siap untuk mendapatkan penyelesaian tab gaya vim yang hanya tersedia di bash> = 4 (versi saat ini brewadalah 5.0.2

# If there are multiple matches for completion, Tab should cycle through them
bind 'TAB':menu-complete

# Display a list of the matching files
bind "set show-all-if-ambiguous on"

# Perform partial completion on the first Tab press,
# only start cycling full results on the second Tab press
bind "set menu-complete-display-prefix on"
Bruno Bronosky
sumber
4

yang chshProgram akan membiarkan Anda mengubah shell default Anda. Ini akan menginginkan path lengkap ke executable, jadi jika shell Anda fishmaka ia ingin Anda memberikan output yang diberikan saat Anda mengetik which fish.

Anda akan melihat garis yang dimulai dengan " Shell:". Jika Anda belum pernah mengeditnya, kemungkinan besar tertulis " Shell: /bin/bash". Ganti /bin/bashjalur itu dengan jalur ke shell yang Anda inginkan.

rejj
sumber
4

Ketika di terminal, buka preferensi terminal menggunakan Command+ ,.

Pada Pengaturan Tab, pilih salah satu tema, dan pilih tab shell di sebelah kanan.

Anda dapat mengatur perintah autostart fish.

holsety
sumber
4

Ini berfungsi untuk saya pada instalasi baru mac osx (sierra):

  1. Tetapkan pengguna saat ini sebagai pemilik shell
sudo chown $(whoami) /etc/shells
  1. Tambahkan Fish ke / etc / shells
sudo echo /usr/local/bin/fish >> /etc/shells
  1. Jadikan Fish shell default Anda dengan chsh
chsh -s /usr/local/bin/fish
  1. Tetapkan ulang root sebagai pemilik shell
sudo chown root /etc/shells
ZecKa
sumber
2
heimdall:~ leeg$ dscl
Entering interactive mode... (type "help" for commands)
 > cd /Local/Default/Users/
/Local/Default/Users > read <<YOUR_USER>>
[...]
UserShell: /bin/bash
/Local/Default/Users >

ubah saja nilai itu (dengan perintah tulis di dscl).

Ordiel
sumber
Saya mendapatkan kesalahan ini ketika saya menjalankan read leeg: <dscl_cmd> Kesalahan DS: -14136 (eDSRecordNotFound)
Léo Léopold Hertz 준영
1
Iya. Itu karena leeg adalah nama pengguna saya , bukan milik Anda: P
0

Jika Anda mengalami masalah dengan cara-cara lain, kerjakan pada mac Mojave tetapi umumnya harus bekerja.

which fish

tambahkan jalur keluaran ke "System Preferences> Users & Groups> klik kanan pengguna, Advanced Options" Tempel hasil yang menjadi "Shell login:"

Sluck
sumber
0

Untuk mengubah shell default Anda di mac jalankan yang berikut:

chsh -s <name-of-shell>

Daftar kerang yang dapat Anda pilih adalah:

  1. / bin / bash
  2. / bin / csh
  3. / bin / dash
  4. / bin / ksh
  5. / bin / sh
  6. / bin / tcsh
  7. / bin / zsh

jadi jika Anda ingin mengubah dari ke / bin / zsh shell, perintah Anda akan terlihat seperti:

chsh -s /bin/zsh

Anda dapat melihat semua shell yang tersedia di sistem Anda dengan menjalankan:

cat /etc/shells
Chavez Harris
sumber