ฉันจะกำหนดค่า zsh ให้เป็นเชลล์เริ่มต้นภายใต้ Cygwin ได้อย่างไร
ฉันจะกำหนดค่า zsh ให้เป็นเชลล์เริ่มต้นภายใต้ Cygwin ได้อย่างไร
คำตอบ:
นอกเสียจากว่าคุณกำลังใช้ cygwin เป็นสภาพแวดล้อมที่มีผู้ใช้หลายคน (ในกรณีนี้ให้ใช้chsh
ตามที่คุณต้องการภายใต้สภาพแวดล้อมมาตรฐาน)
มิฉะนั้นคุณเพียงแค่เปลี่ยน cygwin.bat เพื่อให้ทำงานzsh -l -i
แทนbash --login -i
และมันจะทำงานเป็นเชลล์ล็อกอิน
แน่นอนถ้าคุณต้องการเรียกใช้เชลล์จำนวนมากตั้งแต่เริ่มต้นเพียงสร้างชุดของ.bat
ไฟล์เพื่อโหลดเชลล์ที่แตกต่างกัน ( sh
, ksh
, csh
, fish
ฯลฯ )
ฉันรู้สึกว่าฉันควรอัปเดตสิ่งนี้เพื่อให้ข้อมูลเกี่ยวกับการทำสิ่งนี้โดยไม่ต้องchsh
ทำ แต่ยังทำอยู่ในตอนท้ายของ Unix แก้ไข/etc/passwd
ไฟล์และแทนที่การเกิดขึ้นของด้วย/bin/bash
/bin/zsh
(นี่คือสิ่งที่chsh
จะทำอย่างมีประสิทธิภาพแต่วิธีนี้คุณจะทำเพื่อผู้ใช้ทั้งหมดในครั้งเดียว)
mkpasswd -l -p "$(cygpath -H)" > /etc/passwd
และแก้ไขใหม่สร้าง/etc/passwd
ไฟล์
ถ้าฉันอ่านคำถามของคุณถูกต้องคุณกำลังมองหาอย่างอื่นที่นอกเหนือไปจากสิ่งที่มี อยู่ (ซึ่งได้รับแล้วค่อนข้างเท่ห์ในตัวของมันเอง)
Cygwin รุ่นปัจจุบันไม่มี ไฟล์/ etc / passwdและระบบที่ฉันใช้งานอยู่มีข้อมูลบัญชี Windows ในฐานข้อมูลโดเมนที่อยู่นอกเหนือการควบคุมของฉัน ดังนั้นจึง ไม่รองรับchshอีกต่อไป
ฉันยังพบว่าการทุบตีนั้นไม่ได้เขียนโค้ดลงใน สคริปต์startxwinอย่างหนักและไม่ได้เข้ารหัสไว้ อย่างหนักในไฟล์. bat ใด ๆ ปรากฎว่าคุณไม่จำเป็นต้องเล่นกับไฟล์. bat เลย
ค้นหาวิธีเปลี่ยนเชลล์ฉันพบคำแนะนำเกี่ยวกับ mkpasswd
ฉันเพิ่มลงในการผสม
หน้าคนพูด:
SYNOPSIS mkpasswd [OPTIONS]... OPTIONS Don't use this command to generate a local /etc/passwd file, unless you really need one. See the Cygwin User's Guide for more information. -c,--current Print current user. DESCRIPTION The mkpasswd program can be used to create a /etc/passwd file. Cygwin doesn't need this file, because it reads user information from the Windows account databases, but you can add an /etc/passwd file, for instance if your machine is often dis‐ connected from its domain controller. Note that this information is static, in contrast to the informa‐ tion automatically gathered by Cygwin from the Windows account databases. If you change the user information on your system, you'll need to regenerate the passwd file for it to have the new information. For very simple needs, an entry for the current user can be cre‐ ated by using the option -c.
(ฉันไม่รู้ว่าทำไมการเว้นวรรคจึง "ปิด" ... )
ฉันใช้คำสั่งต่อไปนี้:
mkpasswd -c | sed -e 'sX / bashX / zshX' | ที -a / etc / passwd
ในครั้งต่อไปที่คุณเปิด Cygwin Terminal มันจะตรงไปที่ zsh
และฉันคิดว่าเป็นสิ่งที่คุณต้องการ
ฉันเพิ่งเพิ่มbin
ไดเรกทอรีในไดเรกทอรี cygwin ไปยัง Windows Path Environment Variable แล้วสร้างทางลัดไปที่:
mintty.exe -i /Cygwin-Terminal.ico /bin/zsh --login
หรือเพียงแค่เปลี่ยนทางลัดเมนูเริ่ม cygwin เริ่มต้นเป็นแบบเดียวกัน
/bin/zsh
zsh
the bin directory in the cygwin directory to my Windows Path Environment Variable
ทำงานโดยไม่มีการเปลี่ยนแปลงนี้สำหรับฉัน
i
interactive
คัดลอกมาจากคำตอบของฉันใน Stack Overflow :
แทนการสร้างไฟล์ passwd ซึ่ง Cygwin แนะนำกับ1คุณสามารถแก้ไข /etc/nsswitch.conf เพิ่มหรือแก้ไขบรรทัดต่อไปนี้:
db_shell: / usr / bin / zsh
ด้านล่าง / ขึ้นของวิธีนี้คือถ้าคุณมีผู้ใช้หลายคนการเปลี่ยนแปลงนี้จะมีผลกับพวกเขาทั้งหมด ด้านขึ้น / ลงก็คือว่ามันตายง่าย สิ่งเดียวที่จับได้คือคุณต้องรีสตาร์ท Cygwin
ถ้าคุณทำใช้ mkpasswd หลังการเปลี่ยนแปลงนี้ก็จะใช้เปลือกเริ่มต้นใหม่ของคุณสำหรับผู้ใช้ทั้งหมดที่ได้รับอนุญาตให้เข้าสู่ระบบ
1เอกสาร mkpasswd พูดถึงสิ่งนี้:
อย่าใช้คำสั่งนี้เพื่อสร้างไฟล์ / etc / passwd ในระบบเว้นแต่คุณจะต้องการมัน ดูคู่มือผู้ใช้ Cygwin สำหรับข้อมูลเพิ่มเติม
ฉันไม่พบเหตุผลที่เป็นของแข็งในคู่มือผู้ใช้นอกเหนือจากการกล่าวถึงว่าคุณจะต้องสร้างไฟล์ / etc / passwd และ / etc / group ใหม่หากผู้ใช้และกลุ่มของคุณเปลี่ยนไปซึ่งฉันคิดว่ามันดีพอสมควร เหตุผล. ฉันสามารถพูดได้ว่ากระบวนการค่อนข้างผิดพลาดสำหรับมือใหม่
สมมติว่าคุณสนใจเปลี่ยนเชลล์ที่ใช้ใน mintty / Cygwin Terminal ก่อนอื่นให้ตรวจสอบตัวแปรสภาพแวดล้อม SHELL จากนั้นไฟล์ passwd (ตอนนี้ไม่มีอยู่) จากนั้นกลับไปที่ / bin / sh ซึ่งเป็นสิ่งที่ดูเหมือนว่าจะทำ โดยค่าเริ่มต้น.
ฉันสามารถตั้งค่าตัวแปรสภาพแวดล้อม SHELL ใน Windowsเป็น/usr/bin/zsh
และทำงานได้โดยไม่มีการเปลี่ยนแปลงอื่น ๆ ฉันเพิ่งเปลี่ยนมันสำหรับผู้ใช้ Windows ของฉันไม่ใช่ทั่วโลก
การตั้งค่าตัวแปรสภาพแวดล้อมอาจแตกต่างกันไปสำหรับ Windows รุ่นต่าง ๆ ลองค้นหา "สภาพแวดล้อม" ในแผงควบคุม Windows ของคุณ สำหรับฉันภายใต้ Windows 7 เป็นแผงควบคุม→ระบบ→การตั้งค่าระบบขั้นสูงซึ่งจะแสดงแผง / ไดอะล็อกควบคุมคุณสมบัติของระบบจากนั้นแท็บขั้นสูงจากนั้นปุ่มสภาพแวดล้อมตัวแปรซึ่งจะเปิดกล่องโต้ตอบตัวแปรสภาพแวดล้อมจากนั้นสร้าง ตัวแปรของผู้ใช้ใหม่ชื่อด้วยค่าSHELL
/usr/bin/zsh
จากนั้นตกลงกลับออกมาจากสิ่งเหล่านั้นทั้งหมดและเริ่มต้นเงินใหม่
แค่คิดว่าฉันจะเพิ่มคำตอบนี้ในกรณีที่ช่วยใครก็ได้ที่กำลังมองหา หากคุณใช้ chere (ซึ่งเพิ่มตัวเลือก "Bash prompt here" ให้กับเมนูบริบทคลิกขวาของโฟลเดอร์ใด ๆ ) คุณสามารถตั้งค่าเป็น zsh ("Zsh Prompt Here") ด้วย:
chere -i -t mintty -s zsh
หากคุณต้องการใช้เปลือก Cygwin ภายใน IDE Intellij ให้ใช้การตั้งค่าต่อไปนี้ภายในการตั้งค่า / เครื่องมือ / เทอร์มินัล
c:\cygwin\bin\zsh.exe -l -i
สิ่งนี้จะฝัง cygwin shell ไว้ใน intellij แทนที่จะวางไข่ในหน้าต่างใหม่