ฉันจะเปลี่ยนเชลล์เริ่มต้นของผู้ใช้ใน OSX ได้อย่างไร


33

OSX วิธีที่ถูกต้องในการเปลี่ยนเปลือกเริ่มต้นของผู้ใช้คืออะไร? เมื่อฉันค้นหามันฉันพบการอ้างอิงหลายแอปพลิเคชันที่เรียกว่า NetInfo Manager แต่ฉันไม่พบมันในระบบของฉัน นอกจากนี้ยังมีการอ้างอิงถึงเวอร์ชันบรรทัดคำสั่งชื่อ niutil ซึ่งฉันไม่พบเช่นกัน


คำตอบ:


52

สำหรับ <= 10.4 - ผู้จัดการ netinfo, / users / whoever / shell

สำหรับ> = 10.5

  1. ไปที่การตั้งค่าระบบ -> บัญชี
  2. คลิกที่ไอคอนล็อคเพื่อปลดล็อคบานหน้าต่างการตั้งค่า
  3. คลิกขวา (หรือคลิกควบคุม) กับผู้ใช้และเลือก "ตัวเลือกขั้นสูง"
  4. แก้ไขฟิลด์ล็อกอินเชลล์

5
ว้าวหลังจาก 8 ปีของการใช้ OS XI ไม่รู้เกี่ยวกับการควบคุมการคลิกในการตั้งค่าของผู้ใช้: ฉันคิดว่านี่เพิ่ม 10.5 ในขณะที่คุณชี้ให้เห็น +1
jkp

1
Control-Click กำลังตะลึง!
Eonil

1
ช่วยชีวิตหลังจากย้ายเชลล์บัญชีของฉันออกจาก PATH ... ไม่สามารถเริ่ม Terminal เพื่อแก้ไขผ่านทางบรรทัดคำสั่ง!
davemyron

2
มันไม่ทำงานอีกต่อไปใน el Capitan?
MarcusJ

จริงนี่คือปัญหาของสิ่งนี้ 7 ปีตามลำดับและสิ่งต่าง ๆ มีการเปลี่ยนแปลง - ทำไมไม่ทำวิจัยด้วยตัวเองเพิ่มและตอบและมันจะได้รับ upvoted นั่นคือสิ่งที่ทำงานดีกว่าเพียงแค่ตัดคำตอบเล็กน้อย
Chopper3

33
sudo chsh -s /path/to/shell username

โดยที่ shell คือสิ่งที่คุณต้องการสำหรับผู้ใช้นั้น sudoไม่จำเป็นถ้าคุณรู้usernameรหัสผ่าน

man chsh

สำหรับตัวอย่างเพิ่มเติม


ทำงานเกินไปสำหรับ root สำหรับ su ซึ่งไม่ปรากฏในแผงควบคุม ฉันคิด?
Chris F Carroll

4
นอกจากนี้คุณยังสามารถเรียกใช้chshและเปลี่ยนฟิลด์เชลล์ ถ้าคุณได้รับข้อผิดพลาดเช่นchsh: /usr/local/bin/bash: non-standard shellเพิ่มการ/usr/local/bin/bash /etc/shells
Lri

3
อาจมีบางอย่างเปลี่ยนแปลงใน 10.9 แต่ตอนนี้คำสั่งนี้จะโยนข้อความการใช้งาน ดูเหมือนว่าไวยากรณ์ที่ถูกต้องคือตอนนี้chsh -s /path/to/shell username
Matthematics

9

NetInfo ถูกแทนที่ด้วย Directory Services (dscl) และสามารถบันทึกเชลล์เริ่มต้นสำหรับ Mac OS X ตั้งแต่ 10.3 ได้ถูกทุบตี ก่อนหน้านั้นมันเป็น tcsh

หากคุณต้องการทำสิ่งนี้จากบรรทัดคำสั่ง (เช่นสำหรับการกดผ่าน ARD หรือจากระยะไกลผ่าน SSH) คุณสามารถเรียกใช้:

sudo dscl localhost -change /Local/Default/Users/USERNAME shell OLD_SHELL NEW_SHELL
#In Use:
sudo dscl localhost -change /Local/Default/Users/chealion shell /bin/bash /bin/zsh

หากคุณไม่แน่ใจเกี่ยวกับเปลือกปัจจุบันคุณสามารถเรียกใช้:

sudo dscl localhost -read /Local/Default/Users/USERNAME shell

หากผู้ใช้ไม่ใช่ผู้ใช้ท้องถิ่นเส้นทางจะเปลี่ยนและถ้าจำเป็นคุณจะเปลี่ยนlocalhostเป็นชื่อเซิร์ฟเวอร์ Open Directory ของคุณ (สมมติว่ามันทำงาน 10.5)

ข้อมูลถูกเก็บไว้ใน. plists (xml) ใน/private/var/db/dslocal/- คุณไม่ต้องการแก้ไขไฟล์ plist ด้วยตนเอง


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