เริ่มเปลือก bash (cygwin) ด้วยเส้นทางที่ถูกต้องโดยไม่ต้องเปลี่ยนไดเรกทอรี


13

ฉันต้องรันเชลล์สคริปต์ cygwin โดยไม่ต้องเปลี่ยนไดเรกทอรีทำงานจากนอกสภาพแวดล้อม cygwin

หากฉันเรียกใช้เพียงแค่\path\to\bash.exe -c commandนั้นเส้นทางจะไม่ได้รับการตั้งค่าอย่างถูกต้องและโปรแกรม cygwin ไม่พบ

หากฉันใช้--loginตัวเลือกให้bashตั้งค่าเส้นทางอย่างถูกต้อง แต่เปลี่ยนเป็นโฮมไดเร็กตอรี่ของฉันด้วย

ฉันควรใช้ตัวเลือกใดในการเรียกใช้ bash เพื่อเก็บไดเรกทอรีการทำงานปัจจุบันและยังพบว่าสามารถเรียกใช้งาน cygwin ได้อีกด้วย


สวัสดีคำถามที่คล้ายกันกำลังถูกพูดถึงที่ StackOverflow: stackoverflow.com/questions/9637601/…
Roman Hocke

@ Roman: นี่จะเป็นหัวข้อนอกทั้งหมดใน SO
Ben Voigt

คำตอบ:


18

ปรากฎว่าค่าเริ่มต้น cygwin /etc/profileตรวจสอบตัวแปรสภาพแวดล้อมที่มีชื่อCHERE_INVOKINGและยับยั้งการเปลี่ยนแปลงของไดเรกทอรีถ้าตั้งค่า

ดังนั้น

set CHERE_INVOKING=1
\path\to\bash.exe -l -c command

มีพฤติกรรมที่ต้องการ


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