วิธีการตั้งค่าเปลือกเริ่มต้นของฉันบน Mac?


190

ฉันไม่ชอบที่จะพิมพ์ปลาทุกครั้งที่ฉันเริ่มต้นสถานี ฉันต้องการfishโดยค่าเริ่มต้น ฉันจะตั้งค่า Fish Shell เป็นเชลล์เริ่มต้นของฉันบน Mac ได้อย่างไร

คำตอบ:


31

สิ่งเหล่านี้สามารถใช้ได้กับ MacOS Sierra 10.12.5 (16F73) และอาจเป็น MacOS รุ่นล่าสุดและที่กำลังจะมาถึง

  1. chshไม่เพียงพอที่จะเปลี่ยนเปลือกเริ่มต้น ตรวจสอบให้แน่ใจว่าคุณกดCommand+ ,ขณะที่เทอร์มินัลของคุณเปิดอยู่และเปลี่ยนตัวเลือก 'Shells open with' เป็น 'เชลล์ล็อกอินเริ่มต้น'

  2. ในกรณีทุบตีตรวจสอบให้แน่ใจว่าคุณดำเนินการecho $BASH_VERSIONเพื่อยืนยันว่าคุณกำลังใช้งานทุบตีรุ่นที่ตั้งใจไว้ bash --versionไม่ให้ข้อมูลที่ถูกต้องแก่คุณ


3
เนื่องจากคำตอบนี้เป็นคำตอบที่ได้รับการยอมรับบางทีแทนที่จะเป็นภาคผนวกที่น่าจะเป็นคำตอบอื่นคุณอาจทำให้เป็นคำตอบที่สมบูรณ์เพื่อรวมภาคผนวก
Jason R. Coombs

นี่คือคำตอบในเอกสารตอนนี้
reergymerej

@ JasonR.Coombs เรียบร้อยแล้ว
Tushar Vazirani

1
ปรับปรุง: ตอนนี้เราสามารถตั้งค่าเริ่มต้นเปลือกในPreferencesของTerminal.app ดูคำตอบนี้โดย Pankaj
Basil Bourque

ฉันได้กล่าวถึงแป้นพิมพ์ลัดสำหรับการตั้งค่า
Tushar Vazirani

242

1. sudo nano / etc / shells ป้อนคำอธิบายรูปภาพที่นี่

2. เพิ่ม / usr / local / bin / fish ลงในรายการเชลล์ของคุณ ป้อนคำอธิบายรูปภาพที่นี่

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


2
และคุณควรเปลี่ยนShell open with: Default login shellการตั้งค่าของ Terminal.app
Tikhonov Alexander

77

คุณสามารถใช้chshเพื่อเปลี่ยนเชลล์ของผู้ใช้

รันโค้ดต่อไปนี้เพื่อเปลี่ยนเชลล์เป็น Zsh

chsh -s /bin/zsh

ตามที่อธิบายไว้ใน manpage และโดย Lorin ถ้าเปลือกไม่เป็นที่รู้จักโดย OS /etc/shellsคุณต้องเพิ่มในรายการที่เป็นที่รู้จักของ:


13
พยายามและได้chsh: /usr/local/bin/fish: non-standard shell วิธีแก้ปัญหาคือการเพิ่มลงใน / etc / shells ตามที่อธิบายโดย @ lorin-hochstein คำตอบด้านล่าง
lmsurprenant

dbright @ PowerMac: ~ $ chsh -s / Users / dbright / sys / bin / bash การเปลี่ยนเชลล์สำหรับ dbright รหัสผ่านสำหรับ dbright: chsh: / Users / dbright / sys / bin / bash: เชลล์ที่ไม่ได้มาตรฐาน dbright @ PowerMac: ~ $ ls -l / etc / shells -rw-r - r-- 1 รูตล้อ 179 Sep 23 2007 / etc / shells
ดอนจ้า

ฉันเพิ่งลอง chsh ซึ่งใช้งานได้ง่าย (โดยไม่ต้องคิด-s) ฉันจะลองอีกครั้งในไม่ช้า
Aif

73

จากเทอร์มินัล:

  1. เพิ่ม Fish ไปยัง/etc/shellsซึ่งจะต้องใช้รหัสผ่านของผู้ดูแลระบบ:

    sudo echo /usr/local/bin/fish >> /etc/shells
    
  2. ทำให้ Fish เป็นค่าเริ่มต้นของเชลล์ด้วยchsh:

    chsh -s /usr/local/bin/fish
    

จากการตั้งค่าระบบ:

  1. ผู้ใช้และกลุ่ม→ ctrl คลิกที่ผู้ใช้ปัจจุบัน→ตัวเลือกขั้นสูง ...

  2. เปลี่ยนล็อกอินเชลล์เป็น /usr/local/bin/fish

    เชลล์ล็อกอิน

  3. กดตกลงออกจากระบบและเข้าอีกครั้ง


8
ต้องทำการปรับแต่งเล็กน้อยถึงขั้นตอนที่ 1 -sudo sh -c 'echo /usr/local/bin/fish >> /etc/shells'
purpletonic

อีกวิธีหนึ่งในการทำสิ่งเดียวกันกับ @purpletonic ที่กล่าวถึงecho /usr/local/bin/fish | sudo tee -a /etc/shells
mroach

20

นี่เป็นอีกวิธีในการทำ:

สมมติว่าคุณติดตั้งด้วย MacPorts ซึ่งสามารถทำได้โดยทำดังนี้

sudo port install fish

/opt/local/bin/fishเปลือกของคุณจะตั้งอยู่ใน

คุณต้องบอก OSX ว่านี่เป็นเชลล์ที่ถูกต้อง หากต้องการทำเช่นนั้นให้เพิ่มพา ธ นี้ไปยังจุดสิ้นสุดของ/etc/shellsไฟล์

เมื่อคุณทำสิ่งนี้แล้วคุณสามารถเปลี่ยนเชลล์ได้โดยไปที่การตั้งค่าระบบ -> บัญชี คลิกที่ล็อคเพื่ออนุญาตการเปลี่ยนแปลง คลิกขวาที่บัญชีและเลือก "ตัวเลือกขั้นสูง ... " ในฟิลด์ "ล็อกอินเชลล์" ให้เพิ่มพา ธ ไปหาปลา


ขอบคุณ! มันใช้งานได้ดีมากและทำให้ปลากลายเป็นขั้วเริ่มต้นของฉันไปทุกที่ เพียงแค่เปลี่ยนมันใน terminal เหมือนหนึ่งในคำตอบอื่น ๆ ที่ทำให้ terminal แจ้งให้ฉันทุกครั้งที่ฉันปิดหน้าต่างและ chsh ก็ไม่ได้ผลสำหรับฉัน
jasongregori

12

สิ่งเดียวที่ได้ผลสำหรับฉันคือการรวมกันของวิธีการเหล่านี้ทั้งหมด

  1. ก่อนอื่นฉันต้องเพิ่มปลาลงใน/etc/shellsไฟล์

  2. จากนั้นฉันก็วิ่ง chsh -s /usr/local/bin/fish

  3. ในที่สุดฉันพิมพ์Command+ ,และเพิ่มลง/usr/local/bin/fishในเส้นทางเริ่มต้นที่นั่น

หลังจากที่ฉันได้ทำทั้งสามสิ่งแล้วปลาก็เริ่มโผล่ขึ้นมาเป็นค่าเริ่มต้นสำหรับหน้าต่างเทอร์มินัลใหม่


9

2
ฉันแนะนำให้เลือกวิธีนี้และไม่เปลี่ยนเชลล์ OSX เริ่มต้นของคุณ ฉันมี "infinite installs" บน iWorks - ตัวอย่าง - เนื่องจากสคริปต์การติดตั้งที่ถือว่าคุณมีเชลล์ที่เข้ากันได้กับ SH (ไม่ใช่กรณีของ ZSH ในกรณีของฉัน)
Cyber ​​Oliveira

8

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

  1. เปิดเทอร์มินัลแล้วกดcommand+, (จุลภาค) นี่จะเป็นการเปิดหน้าต่างการตั้งค่า
  2. แท็บแรกคือ 'ทั่วไป'
  3. ค้นหาการตั้งค่า 'Shells open with' และเลือกตัวเลือกที่ 2 ซึ่งต้องการพา ธ ที่สมบูรณ์ไปยังเชลล์
  4. /usr/local/bin/fishวางการเชื่อมโยงกับคำสั่งปลาของคุณซึ่งโดยทั่วไปคือ

ดูภาพหน้าจอนี้ที่zshตั้งเป็นค่าเริ่มต้น

สกรีนช็อตของการป้อน <code> / bin / zsh </code> ในการตั้งค่า Terminal.app

ฉันใช้MacOS เซีย นอกจากนี้ยังทำงานในMacOS ซ้อม


2
ในที่สุด! วิธีแก้ปัญหาที่เหมาะสำหรับผู้ใช้ที่ไม่ใช่ sudo!
Ébe Isaac

7

บน macOS Mojave ฉันต้องทำสิ่งต่อไปนี้ (ใช้ zsh เป็นตัวอย่าง):

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

หมายเหตุ: คุณสามารถใช้วิธีนี้เพื่อรับ bash เวอร์ชันล่าสุดได้เช่นกัน stackoverflow.com/a/55011144/117471ฉันมาด้วยรหัสเดียวกันเกือบทั้งหมดด้วยตัวเอง
Bruno Bronosky

1
zshไม่ต้องติดตั้ง มีอยู่ใน macOS Mojave แล้ว มาพร้อมกับ Mojave และค่าเริ่มต้นใน Catalina
Basil Bourque

5

วิธีรับเวอร์ชันล่าสุดของ bash บน macOS ที่ทันสมัย ​​(ทดสอบบน Mojave)

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

จากนั้นคุณพร้อมที่จะรับแท็บสไตล์ที่สมบูรณ์ซึ่งมีเฉพาะใน bash> = 4 (เวอร์ชันปัจจุบันbrewคือ 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

chshโปรแกรมจะช่วยให้คุณเปลี่ยนเปลือกเริ่มต้นของคุณ มันจะต้องการเส้นทางแบบเต็มไปปฏิบัติการดังนั้นถ้าเปลือกของคุณเป็นแล้วมันจะต้องการให้คุณเพื่อให้การส่งออกที่ได้รับเมื่อคุณพิมพ์fishwhich fish

คุณจะเห็นบรรทัดที่ขึ้นต้นด้วย " Shell:" หากคุณไม่เคยแก้ไขมันเป็นไปได้มากว่า " Shell: /bin/bash" แทนที่/bin/bashพา ธนั้นด้วยพา ธ ไปยังเชลล์ที่คุณต้องการ


4

เมื่อใน terminal เปิดการตั้งค่าการใช้ขั้ว+Command,

บนแท็บการตั้งค่าเลือกหนึ่งในธีมและเลือกแท็บเชลล์ทางด้านขวา

fishคุณสามารถตั้งค่าคำสั่ง autostart


4

งานนี้สำหรับฉันในการติดตั้งใหม่ของ mac osx (เซียร์ร่า):

  1. นิยามผู้ใช้ปัจจุบันในฐานะเจ้าของเชลล์
sudo chown $(whoami) /etc/shells
  1. เพิ่ม Fish ลงใน / etc / shells
sudo echo /usr/local/bin/fish >> /etc/shells
  1. ทำให้ Fish เป็นค่าเริ่มต้นของเชลล์ด้วย chsh
chsh -s /usr/local/bin/fish
  1. กำหนดรูทใหม่ในฐานะเจ้าของเชลล์
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 >

เพียงแค่เปลี่ยนค่านั้น (ด้วยคำสั่ง write in dscl)


ฉันได้รับข้อผิดพลาดนี้เมื่อฉันอ่าน leeg: <dscl_cmd> ข้อผิดพลาดของ DS: -14136 (eDSRecordNotFound)
LéoLéopold Hertz 준영

1
ใช่. นั่นเป็นเพราะ leeg เป็นชื่อผู้ใช้ของฉันไม่ใช่ของคุณ: P

0

ในกรณีที่คุณมีปัญหากับวิธีการอื่น ๆ ทำงานบน mac Mojave แต่โดยทั่วไปควรใช้งานได้

which fish

เพิ่มเส้นทางผลลัพธ์ไปที่ "การตั้งค่าระบบ> ผู้ใช้ & กลุ่ม> ผู้ใช้คลิกขวาตัวเลือกขั้นสูง" วางผลลัพธ์จากการที่ลงใน "เปลือกเข้าสู่ระบบ:"


0

ในการเปลี่ยนเชลล์เริ่มต้นของคุณบน mac ให้ทำดังนี้:

chsh -s <name-of-shell>

รายการหอยที่คุณสามารถเลือกได้คือ:

  1. / bin / ทุบตี
  2. / bin / csh
  3. / bin / ประ
  4. / bin / ksh
  5. bin / sh /
  6. / bin / tcsh
  7. / bin / zsh

ดังนั้นหากคุณต้องการเปลี่ยนจากเป็น / bin / zsh เชลล์คำสั่งของคุณจะมีลักษณะดังนี้:

chsh -s /bin/zsh

คุณสามารถดูเชลล์ที่มีอยู่ทั้งหมดในระบบของคุณโดยเรียกใช้:

cat /etc/shells
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.