การสร้าง ZSH default Shell ใน MacOSX [ปิด]


99

ฉันติดตั้ง zsh บน Mac ของฉัน และตอนนี้ฉันต้องการทำให้เป็นเชลล์เริ่มต้นแทนที่จะเป็น Bash แต่ดูเหมือนว่าฉันจะพบข้อผิดพลาดต่อไปนี้:

$ echo $SHELL
/bin/bash
$ chsh -s /usr/bin/zsh
Changing shell for harshamv.
Password for harshamv:
chsh: /usr/bin/zsh: non-standard shell

1
สิ่งที่ไม่chsh -lเอาท์พุท? (ถ้าไม่ได้ผลจะมีเนื้อหา/etc/shellsอะไรบ้าง) แน่ใจหรือว่าล้มเหลวไม่ใช่แค่เตือน? การเพิ่มที่/usr/bin/zshนั่นทำให้ใช้งานได้หรือไม่?
Etan Reisner

1
chsh: option ต้องการอาร์กิวเมนต์ - l การใช้งาน: chpass [-l location] [-u authname] [-s shell] [user]
Harsha MV

/ bin / bash / bin / csh / bin / ksh / bin / sh / bin / tcsh / bin / zsh
Harsha MV

เกิดอะไรขึ้น/bin/zsh?
jxh

1
มีวิธีอย่างเป็นทางการในการเปลี่ยนเชลล์เริ่มต้นเป็น zsh ในขณะนี้ ดูเอกสาร Apple "ใช้ zsh เป็นเชลล์เริ่มต้นบน Mac ของคุณ" support.apple.com/en-ca/HT208050
Anthonyeef

คำตอบ:


86

3 ขั้นตอนง่ายๆ:

  1. which zshสิ่งนี้ทำให้คุณมีเส้นทางสู่ zsh
  2. จากนั้นchsh -s /bin/zshหรือแทนที่เส้นทางไปยัง zsh ของคุณหากแตกต่างกัน
  3. รีสตาร์ทเครื่องของคุณ

ใช่นั่นได้ผล โยเซมิตีเฉพาะหรือไม่?
Harsha MV

2
ไม่ฉันไม่คิดว่ามันเป็นเพียงข้อมูลของคุณ :)
Quentin Perez

8
ความคิดเห็นอื่นที่เกี่ยวข้องกับคำถามเก่า ๆ เดียวกันที่ระบุว่าให้เพิ่ม/usr/bin/zshเพื่อ/etc/shellsแก้ปัญหา
Brice

ทำงานได้อย่างสมบูรณ์แบบ
Olkunmustafa

1
ตั้งค่าตาม / etc / เชลล์! มองหาเส้นทาง zsh ด้วย '$ nano / etc /hells' Mine อยู่ที่ / bin / zsh แทนที่จะเป็น / usr / bin / zsh ในวันที่ 10.12.2
oikonomopo

190

คำตอบที่ถูกต้องควรช่วยแก้ปัญหาของคุณ:

chsh: / usr / bin / zsh: เชลล์ที่ไม่ได้มาตรฐาน

สาเหตุที่เป็นเช่นนี้เนื่องจากchshจะยอมรับเฉพาะเชลล์ที่กำหนดไว้ในไฟล์ / etc / เชลล์ดังที่คุณเห็นโดยการอ่านคู่มือสำหรับchsh:

chsh จะยอมรับชื่อพา ธ แบบเต็มของไฟล์ปฏิบัติการใด ๆ บนระบบ อย่างไรก็ตามมันจะออกคำเตือนหากเชลล์ไม่อยู่ในรายการ / etc / เชลล์ไฟล์

ในการแก้ปัญหานี้และทำให้ zsh เป็นเชลล์เริ่มต้นคุณควร:

$ sudo echo "$(which zsh)" >> /etc/shells
$ chsh -s $(which zsh)

แน่นอนฉันคิดว่านั่นzshอยู่ในเส้นทางของคุณที่นี่ การแก้ปัญหานี้ยังจะทำงานถ้าคุณยกตัวอย่างเช่นเลือกที่จะติดตั้งล่าสุดกับzshbrew install zsh

แก้ไข (ขอบคุณสำหรับ ThisIsFlorianK สำหรับความคิดเห็น) :

/etc/shells: Permission deniedทั้งนี้ขึ้นอยู่กับการตั้งค่าเปลือกของคุณคุณอาจได้รับข้อความว่า คุณสามารถค้นหาข้อมูลเกี่ยวกับปัญหานี้ได้ที่นี่ ในการแก้ไขปัญหาให้ใช้สิ่งต่อไปนี้แทน:

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

4
นี่ถูกต้องมากกว่าคำตอบที่ยอมรับในความคิดของฉัน สมมติว่า zsh ถูกติดตั้งที่ / usr / bin / zsh แล้วคำตอบอื่น ๆ จะไม่ทำงาน พวกเขาทำงานให้กับ OP เพราะโดยค่าเริ่มต้น Apple จะติดตั้ง zsh ที่ / bin / zsh อย่างไรก็ตามหากคุณต้องการใช้ zsh ของ homebrew (ซึ่งติดตั้งภายใต้ / usr / local / bin / zsh) นี่เป็นวิธีที่เหมาะสมในการทำ
กริยาเมื่อ

ฉันมี "bash: / etc /hells: Permission disabled" คำตอบผ่านการตั้งค่าระบบใช้ได้ผลสำหรับฉัน
Ricardo Stuven

44
หากคุณได้รับ/etc/shells: Permission denied==> ให้ทำแทน: sudo sh -c "echo $(which zsh) >> /etc/shells"
ThisIsFlorianK

1
stackoverflow.com/a/44547726/99834 - ทำงานโดยไม่ยุ่งกับไฟล์ระบบ สิ่งเดียวที่ขาดหายไปคือ CLI verson สำหรับการดำเนินการเดียวกัน
sorin

@sorin นี่เป็นการลงคะแนนความป่าเถื่อนโดยไม่มีเหตุผลหรือมีอะไรผิดปกติกับคำตอบ? ไฟล์ระบบเป็นไฟล์ข้อความที่แก้ไขได้ด้วยเหตุผล chshพร้อมใช้งานตามค่าเริ่มต้นด้วยเหตุผล แม้ว่าจะไม่มีอะไรผิดปกติกับการคลิกผ่านเมนูมากมายเพื่อทำสิ่งเดียวกันให้สำเร็จ แต่นั่นไม่เพียง แต่นำเข้าไม่ได้และเกิดข้อผิดพลาดเท่านั้น แต่ยังทำให้เข้าใจผิดว่ามันซ่อนจากผู้ใช้ที่การเปลี่ยนแปลงมาจาก
dangom

52

ฉันสามารถทำงานนี้ได้โดยทำสิ่งต่อไปนี้:

  1. ไปที่ System Preferences
  2. คลิกที่ "ผู้ใช้และกลุ่ม"
  3. คลิกแม่กุญแจเพื่อทำการเปลี่ยนแปลง
  4. คลิกขวาที่ผู้ใช้ปัจจุบัน -> ตัวเลือกขั้นสูง
  5. เปลี่ยนล็อกอินเชลล์เป็น / bin / zsh ในดรอปดาวน์
  6. เปิดเทอร์มินัลใหม่และยืนยันด้วย echo $SHELL

4
หากคุณติดตั้ง zsh ผ่าน homebrew มันจะวาง zsh /usr/local/bin/zshไว้ ดังนั้นคุณจะต้องแก้ไข/etc/shellsภายใต้ sudo และเพิ่มรายการ/usr/local/bin/zshก่อนที่คุณจะสามารถเลือกไฟล์ปฏิบัติการ zsh ที่ติดตั้ง hombrew ได้
Baldy

8

ใน MacBook ที่ทำงานฉันต้องทำสิ่งนี้:

sudo chsh -s /usr/local/bin/zsh my_user_name

จากนั้นฉันต้องสร้าง.bash_profileไฟล์เพื่อให้เทอร์มินัลเปลี่ยนเป็น z-shell ทุกครั้งที่ฉันเปิด:

touch ~/.bash_profile
echo 'export SHELL=$(which zsh)' >> ~/.bash_profile
echo 'exec $(which zsh) -l' >> ~/.bash_profile

ความคิดที่ถูกยืมมาจากที่นี่

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