Làm cách nào để đặt shell mặc định của tôi trên Mac?


190

Tôi không thích gõ lại cá mỗi khi tôi bắt đầu thiết bị đầu cuối. Tôi muốn fishmặc định. Làm cách nào tôi có thể đặt vỏ cá làm vỏ mặc định của mình trên máy Mac?

Câu trả lời:


31

Chúng được áp dụng cho MacOS Sierra 10.12.5 (16F73) và có thể một số phiên bản MacOS gần đây và sắp tới khác.

  1. chshkhông đủ để thay đổi shell mặc định. Đảm bảo bạn nhấn Command+ ,trong khi thiết bị đầu cuối của bạn đang mở và thay đổi tùy chọn 'Shell mở bằng' thành 'Shell đăng nhập mặc định'.

  2. Trong trường hợp bash, hãy đảm bảo rằng bạn thực thi echo $BASH_VERSIONđể xác nhận rằng bạn đang chạy phiên bản bash dự định. bash --versionkhông cung cấp cho bạn thông tin chính xác.


3
Vì câu trả lời này là câu trả lời được chấp nhận, có lẽ thay vì nó là phần phụ lục có lẽ là câu trả lời khác , bạn có thể biến nó thành một câu trả lời hoàn chỉnh để bao gồm phần phụ lục.
Jason R. Coombs

Điều này được trả lời trong các tài liệu bây giờ.
reergymerej

@ JasonR.Coombs Xong.
Tushar Vazirani

1
Cập nhật: Bây giờ chúng ta có thể thiết lập mặc định trong vỏ Preferencescủa Terminal.app . Xem câu trả lời này của Pankaj.
Basil Bourque

Tôi đã đề cập đến các phím tắt cho các sở thích.
Tushar Vazirani

241

1. sudo nano / etc / shell nhập mô tả hình ảnh ở đây

2. thêm / usr / local / bin / fish vào danh sách vỏ của bạn nhập mô tả hình ảnh ở đây

3. chsh -s / usr / local / bin / cá


2
Và bạn nên thay đổi Shell open with: Default login shellcài đặt của Terminal.app
Tikhonov Alexander

77

Bạn có thể sử dụng chsh để thay đổi vỏ của người dùng.

Chạy mã sau đây, ví dụ, để thay đổi shell của bạn thành Zsh

chsh -s /bin/zsh

Như được mô tả trong trang chủ và bởi Lorin, nếu hệ điều hành không biết hệ vỏ, bạn phải thêm nó vào danh sách đã biết : /etc/shells.


13
Đã thử và nhận chsh: /usr/local/bin/fish: non-standard shell Giải pháp là thêm nó vào / etc / shell như được mô tả bởi câu trả lời @ lorin-hochstein bên dưới
lmsurprenant

dbright @ PowerMac: ~ $ chsh -s / Users / dbright / sys / bin / bash Thay đổi shell cho dbright. Mật khẩu cho dbright: chsh: / Users / dbright / sys / bin / bash: shell không chuẩn dbright @ PowerMac: ~ $ ls -l / etc / shells -rw-r - r-- 1 bánh xe gốc 179 ngày 23 tháng 9 năm 2007 / etc / shells
don sáng

Hum, gần đây tôi đã thử chsh hoạt động như một người dùng đơn giản (không có -smặc dù). Tôi sẽ thử lại sớm.
Aif

73

Từ thiết bị đầu cuối:

  1. Thêm Fish vào /etc/shells, sẽ yêu cầu mật khẩu quản trị:

    sudo echo /usr/local/bin/fish >> /etc/shells
    
  2. Biến Fish thành vỏ mặc định của bạn với chsh:

    chsh -s /usr/local/bin/fish
    

Từ tùy chọn hệ thống:

  1. Người dùng và nhóm → nhấp ctrl vào Người dùng hiện tại → Tùy chọn nâng cao ...

  2. Thay đổi vỏ Đăng nhập thành /usr/local/bin/fish

    đăng nhập vỏ

  3. Nhấn OK, đăng xuất và đăng nhập lại


8
Phải thực hiện một điều chỉnh nhỏ cho bước 1. -sudo sh -c 'echo /usr/local/bin/fish >> /etc/shells'
purpletonic

Chỉ cần một cách khác để làm điều @purpletonic cùng đề cậpecho /usr/local/bin/fish | sudo tee -a /etc/shells
mroach

20

Đây là một cách khác để làm điều đó:

Giả sử bạn đã cài đặt nó với MacPorts, có thể được thực hiện bằng cách thực hiện:

sudo port install fish

Vỏ của bạn sẽ được đặt trong /opt/local/bin/fish.

Bạn cần nói với OSX rằng đây là một vỏ hợp lệ. Để làm điều đó, thêm đường dẫn này vào cuối /etc/shellstập tin.

Khi bạn đã hoàn thành việc này, bạn có thể thay đổi trình bao bằng cách đi tới Tùy chọn hệ thống -> Tài khoản. Nhấp vào Khóa để cho phép thay đổi. Nhấp chuột phải vào tài khoản và chọn "Tùy chọn nâng cao ...". Trong trường "Đăng nhập vỏ", thêm đường dẫn đến cá.


cảm ơn! điều này làm việc tuyệt vời và làm cho cá thiết bị đầu cuối mặc định của tôi ở khắp mọi nơi. chỉ cần thay đổi nó trong thiết bị đầu cuối giống như một trong những câu trả lời khác đã khiến thiết bị đầu cuối nhắc tôi mỗi khi tôi đóng cửa sổ và chsh chỉ không hoạt động với tôi.
jasongregori

12

Điều duy nhất làm việc cho tôi là sự kết hợp của tất cả các phương pháp này.

  1. Đầu tiên tôi phải thêm cá vào /etc/shellstập tin

  2. Sau đó tôi chạy chsh -s /usr/local/bin/fish

  3. Cuối cùng, tôi đã gõ Command+ ,và thêm vào /usr/local/bin/fishđường dẫn mặc định ở đó

Chỉ sau khi tôi đã làm cả ba điều, cá bắt đầu bật lên như mặc định cho các cửa sổ đầu cuối mới.



8

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

  1. Mở terminal của bạn và nhấn command+ ,(dấu phẩy). Điều này sẽ mở một cửa sổ tùy chọn.
  2. Tab đầu tiên là 'Chung'.
  3. Tìm 'Shells mở với cài đặt' và chọn tùy chọn thứ 2 cần đường dẫn hoàn chỉnh tới shell.
  4. Dán liên kết đến lệnh cá của bạn, thường là /usr/local/bin/fish.

Xem ảnh chụp màn hình này, nơi zshđang được đặt làm mặc định.

ảnh chụp màn hình nhập <code> / bin / zsh </ code> trong tùy chọn Terminal.app

Tôi đang sử dụng macOS Sierra . Cũng hoạt động trong macOS Mojave .


2
Cuối cùng! Một giải pháp hoạt động cho người dùng không sudo!
Ébe Isaac

7

Trên macOS Mojave tôi đã phải làm như sau (sử dụng zsh làm ví dụ):

brew install zsh
sudo sh -c "echo $(which zsh) >> /etc/shells"
chsh -s $(which zsh)

Lưu ý: Bạn cũng có thể sử dụng phương pháp chính xác này để có được phiên bản bash mới nhất. stackoverflow.com/a/55011144/117471 Tôi đã tự mình nghĩ ra gần như cùng một mã.
Bruno Bronosky

1
Không cần cài đặt zsh. Đã có mặt trên macOS Mojave. Được gói trên Mojave và mặc định ở Catalina.
Basil Bourque

5

Cách tải phiên bản bash mới nhất trên macOS hiện đại (đã thử nghiệm trên Mojave).

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

Sau đó, bạn đã sẵn sàng để hoàn thành tab kiểu vim chỉ có trên bash> = 4 (phiên bản hiện tại brewlà 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"

4

các chshchương trình sẽ cho phép bạn thay đổi vỏ mặc định của bạn. Nó sẽ muốn đường dẫn đầy đủ đến thực thi, vì vậy nếu shell của bạn fishthì nó sẽ muốn bạn cung cấp đầu ra được đưa ra khi bạn gõ which fish.

Bạn sẽ thấy một dòng bắt đầu bằng " Shell:". Nếu bạn chưa bao giờ chỉnh sửa nó, rất có thể nó sẽ nói " Shell: /bin/bash". Thay thế /bin/bashđường dẫn đó bằng đường dẫn đến vỏ mong muốn của bạn.


4

Khi ở trong thiết bị đầu cuối, mở tùy chọn thiết bị đầu cuối bằng cách sử dụng Command+ ,.

Trên Tab Cài đặt, chọn một trong các chủ đề và chọn tab shell ở bên phải.

Bạn có thể đặt lệnh tự khởi động fish.


4

Công việc này đối với tôi khi cài đặt mac osx (sierra) mới:

  1. Xác định người dùng hiện tại là chủ sở hữu của shell
sudo chown $(whoami) /etc/shells
  1. Thêm cá vào / etc / shell
sudo echo /usr/local/bin/fish >> /etc/shells
  1. Biến Fish thành vỏ mặc định của bạn với chsh
chsh -s /usr/local/bin/fish
  1. Xác định lại gốc là chủ sở hữu của vỏ
sudo chown root /etc/shells

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 >

chỉ cần thay đổi giá trị đó (với lệnh write in dscl).


Tôi gặp lỗi này khi chạy đọc leeg: <dscl_cmd> Lỗi DS: -14136 (eDSRecordNotFound)
Léo Léopold Hertz

1
Đúng. Đó là bởi vì leeg là tên người dùng của tôi , không phải của bạn: P

0

Trong trường hợp bạn đang gặp rắc rối với những cách khác, hãy làm việc trên mac Mojave nhưng thường sẽ hoạt động.

which fish

thêm đường dẫn đầu ra vào "Tùy chọn hệ thống> Người dùng & Nhóm> người dùng nhấp chuột phải, Tùy chọn nâng cao" Dán kết quả từ đó vào "Vỏ đăng nhập:"


0

Để thay đổi shell mặc định của bạn trên mac, hãy chạy như sau:

chsh -s <name-of-shell>

Danh sách các shell bạn có thể chọn là:

  1. / thùng / bash
  2. / thùng / csh
  3. / bin / dấu gạch ngang
  4. / thùng / ksh
  5. / thùng / sh
  6. / bin / tcsh
  7. / thùng / zsh

vì vậy nếu bạn muốn thay đổi từ sang shell / bin / zsh, lệnh của bạn sẽ như sau:

chsh -s /bin/zsh

bạn có thể thấy tất cả các shell có sẵn trên hệ thống của mình bằng cách chạy:

cat /etc/shells
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.