เปิด Cygwin ที่โฟลเดอร์เฉพาะ


226

ฉันจะสร้างทางลัด Cygwin ที่จะเปิด Cygwin ในโฟลเดอร์ที่ต้องการได้อย่างไร สิ่งนี้จะลบล้างการพิมพ์

cd /cygdrive/c/Users/Tom/Desktop/

ทุกครั้งที่ฉันเปิดตัว Cygwin


2
สร้างไฟล์. bat: นี่คือบทแนะนำคอมพิวเตอร์ computerhope.com/batch.htm
Umar Jamil

หมายเหตุ: แพคเกจ chere อาจต้องมีการยกตัวอย่างด้วยสิทธิ์ผู้ดูแลระบบ หากคุณถูกจับโดยสิ่งนี้และถูกล่อลวงให้ใช้งานsudoคุณอาจไม่ได้รับผลลัพธ์ตามที่คาดหวัง ในกรณีนี้เข้าสู่ระบบในฐานะผู้ใช้ผู้ดูแลระบบบนเครื่อง windows
dreftymac

คำตอบ:


410

เมื่อคุณติดตั้ง Cygwin (หรือถ้าคุณติดตั้งแล้วให้ดาวน์โหลดอีกครั้งและเริ่มการติดตั้งอีกครั้งเพื่อเรียกใช้การอัปเดต) ตรวจสอบให้แน่ใจว่าคุณได้เลือกchereแพ็คเกจภายใต้หมวดหมู่ "หอย"

หลังจากที่มีการเปิดตัว Cygwin เปิดสถานี Cygwin (ในฐานะผู้ดูแล) chere -i -t mintty -s bashและพิมพ์คำสั่ง:

ตอนนี้คุณควรมี "Bash Prompt Here" ในเมนูบริบทคลิกขวาของ Windows

( minttyเป็นขั้วเริ่มต้นของ Cygwin. ถ้าคุณไม่ได้เลือกด้วย-tตัวเลือกของคุณ "ทุบตี Prompt ที่นี่" จะใช้ขั้วเดียวกับที่ใช้ Windows Command Prompt ซึ่งจะช่วยป้องกันการปรับขนาดในแนวนอน.)


39
หาน่ากลัวขอบคุณ! ฉันค้นพบว่าคุณสามารถระบุเทอร์มินัลที่คุณต้องการเปิดใช้-tเช่นเปิดมิ้นต์ที่คุณใช้chere -i -t mintty
Kevin Condon

29
เพิ่งทดสอบกับ 64 บิต cygwin (1.7.27) และตอนนี้ดูเหมือนว่าจะมีอยู่ เคล็ดลับ: อย่าลืมเปิดตัว cygwin terminal ด้วยสิทธิ์ของผู้ดูแลระบบ
BuildTheRobots

11
อีกสิ่งที่ควรทราบ หากคุณทำสิ่งนี้แล้วด้วยchere -i -t mintty -fการบังคับให้เขียนทับ คุณยังจะต้องเรียกใช้ cygwin ในฐานะผู้ดูแลระบบเช่นกัน
Greg Jennings

29
มีปัญหาการอนุญาตใน W7x64 (ข้อผิดพลาด (5): การเข้าถึงถูกปฏิเสธไม่สามารถเขียน Hive ได้) แก้ไขโดยเปิด Cygwin ในฐานะผู้ดูแลระบบ
DmitrySandalov

17
Cygwin ไม่มีเปลือกเริ่มต้นในกรณีของฉันดังนั้นการเพิ่ม-s bashที่จะทำให้การchere -i -t mintty -s bashทำงานนี้สำหรับฉัน
ไบรซ์ Guinta

97

นี่คือสิ่งที่ฉันใช้ ไม่ต้องใช้chereแพคเกจหรือแก้ไขรีจิสทรี ทำงานบน Windows 7

ไปที่โฟลเดอร์ "ส่งไปยัง" ของคุณ:

C:\Users\<your_user_name>\AppData\Roaming\Microsoft\Windows\SendTo

สร้างทางลัดชื่อBash Hereนี้ในTargetฟิลด์:

C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico  C:\cygwin\bin\bash.exe  -l -c "cd \"$0\" ; exec bash"

ในการ Windows Explorer Send To > Bash Hereคุณคลิกขวาที่โฟลเดอร์และเลือก

และนี่คือเคล็ดลับที่ตรงกันข้ามการเปิด Windows Explorer ใน bash dir ปัจจุบันของคุณ สร้างนามแฝงนี้:

alias winx='/cygdrive/c/Windows/explorer.exe /e,\`cygpath -w .\`'

หมายเหตุ: cygpath -w .ส่วนข้างต้นถูกล้อมรอบด้วยเครื่องหมายขีดหลัง

ตอนนี้เพียงพิมพ์winxคำสั่ง bash และ Win Explorer จะปรากฏขึ้นมา

หมายเหตุ: หาก winx นำคุณไปยังโฟลเดอร์เอกสารของคุณให้ลอง

alias winx='/cygdrive/c/Windows/explorer.exe /e,`cygpath -w $PWD`'

3
เคล็ดลับดีมาก แต่winxนามแฝงไม่ทำงานในการตั้งค่า Cygwin ของฉัน ฉันต้องลบแบ็กสแลชทั้งสองและแทนที่.ด้วย$PWDเพื่อให้มันใช้งานได้
not2qubit

จะเกิดอะไรขึ้นถ้าทางลัด (ปรับให้ใช้เส้นทาง Cygwin64 ของการติดตั้งของฉัน) จะเปิด cygwin ไปยังโฟลเดอร์ผู้ใช้ของฉัน :( อาจใช้ได้กับ Cygwin 32- บิตเท่านั้นหรือไม่
Alex Hall

อันนี้ก็ใช้ได้กับฉันด้วยalias winx='/cygdrive/c/Windows/explorer.exe /e,$(cygpath -wa .)'
Wakan Tanka

1
ใน Cygwin 2.6.0 (บน Win 7 x64) ก็สามารถทำได้ง่ายมาก: cygstart .เพื่อเปิด Explorer ที่โฟลเดอร์ปัจจุบันหรือไวยากรณ์ของโฟลเดอร์ใด ๆcygstart .., cygstart /your/pathฯลฯ ...
244an

2
คำเตือน: C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico C:\cygwin\bin\bash.exe -l -c "cd \"$0\" ; exec bashเปิดให้จัดการไฟล์เปิดอยู่ใน$0ไดเรกทอรีแม้ว่าคุณจะเปลี่ยนไดเรกทอรีทำงานเป็นอย่างอื่นก็ตาม มีอะไรที่เลวร้ายยิ่งสำเนาวางไข่ของหน้าต่าง ( ALT+F2) $0แม้ในขณะที่คุณมีอยู่แล้วมีการเปลี่ยนแปลงไดเรกทอรีการทำงานเปิดการจัดการไฟล์อื่นไป สิ่งนี้อาจรบกวนการทำงานบางอย่างที่อาจต้องการลบ / แก้ไข$0ในกระบวนการใด ๆ หากคุณได้รับข้อผิดพลาด 'การอนุญาตที่ถูกปฏิเสธ' เมื่อเข้าถึง$0นี่อาจเป็นสาเหตุ
แมตต์

33

จากเทอร์มินัล cygwin ให้รันคำสั่งนี้:

echo "cd your_path" >> ~/.bashrc

สคริปต์. bashrc จะทำงานเมื่อคุณเปิดเซสชัน bash ใหม่ โค้ดด้านบนที่มีการเปลี่ยนแปลงเป็นไดเร็กทอรีyour_pathเมื่อคุณเปิดเซสชัน cygwin ใหม่


3
นี่คือคำตอบ! ง่ายมาก.
Devin Walker

ใช่! นั่นง่ายมาก! โหวต!
Alex Byrth

19
นี่ไม่ใช่คำตอบเนื่องจากไม่ได้สร้างทางลัดที่ใช้ไดเรกทอรีดังกล่าวตามที่คำถามกำหนดไว้มันจะเปลี่ยนพฤติกรรมของวิธีการทั้งหมดในการเริ่มต้น Cygwin เชลล์ คุณไม่ควรเปลี่ยนการตั้งค่าส่วนกลาง (หรือโปรไฟล์การเข้าสู่ระบบ) เพื่อแก้ไขปัญหาในท้องถิ่น
Ben Voigt

ผมเคยใช้ว่าวิธีการนี้จะผนวกให้ผู้ใช้รหัสผ่านไฟล์ตั้งใจออกนอกหนึ่งใน>ตัวละคร จากนั้นฉันออกจากระบบ :-)
paxdiablo

@paxdiablo ouch
bschwagg

30

ฉันสร้างไฟล์. reg ซึ่งวางตัวเลือก "Open Cygwin Here" ในเมนูบริบทคลิกขวา ขึ้นอยู่กับแพ็คเกจ "chere" ของ Cygwin ซึ่งคุณสามารถติดตั้งได้โดยใช้apt-cygหากคุณไม่ได้ติดตั้งในการตั้งค่าเริ่มต้น

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash]
@="Open Cygwin Here"

[HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash\command]
@="C:\\cygwin\\bin\\mintty.exe -e /bin/xhere /bin/bash.exe"

7
สำหรับผู้ที่สงสัยว่าจะใช้งานได้อย่างไรเพียงแค่คัดลอกข้อความพื้นหลังสีเทาและวางไว้ในไฟล์ข้อความชื่อ "foo.reg" และดับเบิลคลิก
Andrew Moylan

3
+1 ทางออกที่ดีที่สุดที่นี่ และขอบคุณที่กล่าวถึงapt-cygฉันไม่ทราบเกี่ยวกับเครื่องมือนี้
user11153

นี่คือสิ่งที่ฉันกำลังมองหาและมันก็ช่วยฉันในสิ่งอื่น ๆ ได้เพราะแม้แต่เว็บไซต์ Microsoft ก็ไม่ได้ผลลัพธ์เหมือนกัน
FilBot3

ฉันต้องเปลี่ยนเป็น "cygwin" แต่ฉันได้รับข้อผิดพลาดนี้: "ไม่สามารถเรียกใช้ / bin / xhere: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว"
Totty.js

@ Totty.js คุณแน่ใจหรือว่าได้ติดตั้งแพ็คเกจ 'chere' ใน Cygwin?
Jeutnarg

17

สำหรับ cygwin64 หรือการติดตั้งที่ไม่มี chere คุณสามารถใช้คำสั่งต่อไปนี้ในรายการรีจิสตรี (สมมติว่า windows เกิดจากพา ธ ของคุณสมมติว่าไดเร็กทอรีการติดตั้ง cygwin คือ c: \ cygwin64)

C:\cygwin64\bin\mintty.exe /bin/sh -lc 'cd "`cygpath "%V"`"; bash'

ใช้งานได้กับไฟล์ Windows 7 และ 8 Registry ที่สามารถดาวน์โหลดได้ที่นี่: http://tomkay.me/blog/Cygwin64---Open-Here-18

Windows Registry Editor Version 5.00
; Open cygwin to folder
; http://tomkay.me - Tom Kay

[HKEY_CLASSES_ROOT\Folder\shell\open_cygwin]
@="Open Cygwin Here"

[HKEY_CLASSES_ROOT\Folder\shell\open_cygwin\command]
@="C:\\cygwin64\\bin\\mintty.exe /bin/sh -lc 'cd \"`cygpath \"%V\"`\"; bash'"

[HKEY_CLASSES_ROOT\Directory\Background\shell\open_cygwin]
@="Open Cygwin Here"

[HKEY_CLASSES_ROOT\Directory\Background\shell\open_cygwin\command]
@="C:\\cygwin64\\bin\\mintty.exe /bin/sh -lc 'cd \"`cygpath \"%V\"`\"; bash'"

คุณช่วยอธิบายได้ไหมว่าทำไมคุณมีรายการรีจิสตรี 3 (x2)
not2qubit

1
มีไว้สำหรับไดเรกทอรีไดรฟ์และบริบทบริบท
Tom Kay

ในที่สุดทางออกหนึ่งที่เหมาะกับฉันแม้ว่าฉันจะมีปัญหาบางอย่างที่เข้าใจได้อย่างสมบูรณ์ ;-) ['ทุบตี' หลังจาก 'exec bash'] คำแนะนำ: คุณสามารถแทนที่ 3 รายการด้วย 1: 'โฟลเดอร์' แทน 'ไดเรกทอรี', 'ไดรฟ์' และ 'พื้นหลัง'
t0r0X

ด้วย 'โฟลเดอร์' ลิงก์จะปรากฏในเมนูบริบทของไดรฟ์ แต่ไม่สามารถดำเนินการได้ อย่างไรก็ตามฉันสามารถลดได้ถึง 2 รายการด้วย 'Folder' และ 'Directory \ Background'
Tom Kay

1
สำหรับ emacs: "C: \\ cygwin \\ bin \\ mintty.exe -i /Cygwin-Terminal.ico / bin / bash -l -c 'emacs \" cygpath \"%V\"\ ";'"
Jan Matousek

12

หากคุณต้องการให้ไดเรกทอรีนั้นเป็นค่าเริ่มต้นให้เพิ่มcdคำสั่งลงใน~/.profileไฟล์ของคุณ

สิ่งที่ฉันมักจะทำคือใช้วิธีการนั้นเพื่อตั้งค่าไดเรกทอรีปกติของฉันรวมทั้งกำหนด aliases สำหรับกรณีทั่วไปของฉันด้วย:

alias tom="cd /users/tom"

หรือเทียบเท่าของคุณ ทำให้ฉันเปลี่ยนไดเรกทอรีได้เร็วมาก


ต้องเพิ่มนามแฝงลงใน~/.profileไฟล์ด้วยหรือเพียงแค่เรียกใช้ครั้งเดียวหรือไม่
iono

2
@tomeoftom ถ้าคุณเรียกใช้ภายในเชลล์มันจะมีผลกับเชลล์นั้นเท่านั้น มันจะไม่ส่งผลกระทบต่อคนอื่น ๆ ที่คุณเริ่มต้น ดังนั้นหากคุณต้องการให้มันพร้อมใช้งานเสมอคุณต้องใส่มันไว้ในไฟล์เริ่มต้นของคุณ (ซึ่ง~/.profileเป็นไปได้หนึ่งอย่าง)
paxdiablo

มันไม่ทำงานสำหรับฉันเมื่อใส่ ~ / .profile แต่ ~ / .bashrc ทำงาน
zupa

@zupa กฎที่ว่าไฟล์เริ่มต้นนั้นมีความซับซ้อนพอสมควร (แม้ว่ามันจะอยู่ในbashman page ถ้าคุณขุดลึกลงไป) นั่นเป็นเหตุผลที่ฉันระบุว่า.profileเป็นไปได้อย่างหนึ่ง
paxdiablo

.profile ท้ายที่สุดแหล่งที่มา. bashrc ดังนั้นคุณอาจต้องการผนวกคำสั่งนั้นลงใน bashrc แทน (. โปรไฟล์ไม่ได้ผลสำหรับฉัน)
laertis

8

ฉันใช้และไอคอนเพื่อเปิด cygwin โดยไม่มีchereแพ็คเกจ

  1. สร้างทางลัดบนเดสก์ท็อปของฉันสำหรับเทอร์มินัล cygwin
  2. คลิก R ไอคอนและเลือกคุณสมบัติ
  3. บนแท็บทางลัดให้ใช้สิ่งนี้สำหรับเป้าหมาย: C:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico -c 'cd'
  4. สำหรับการเริ่มต้นใส่เส้นทางของ dir / โฟลเดอร์ที่คุณต้องการเปิด cygwin กล่าวคือC:\some\dir\name\here

ok 2 สิ่งที่ 1. ท้าย-cใน "เป้าหมาย" ทำให้ไม่แตกต่างตราบใดที่คุณให้เส้นทางใน "เริ่มต้นใน" 2. PATHการแก้ปัญหานี้จะสร้างปัญหากับ cygwin ล้มเหลว/usr/local/bin:/usr/binในการเพิ่มค่าในระบบ PATH ทำให้ไม่สามารถเรียกใช้ไบนารีบางตัวได้การกำหนดค่าอาจอยู่ใน/etc/profile>> `ถ้า [$ {CYGWIN_NOWINPATH-addwinpath} =" addwinpath "]; จากนั้น `
laertis

8

ในฐานะที่เป็น two7s_clash กล่าวว่าคุณต้องติดตั้งchereแพ็กเกจและตั้งค่า mintty ก่อน:

  1. เปิด Terminal Cygwin ในฐานะผู้ดูแลระบบ
  2. apt-cyg install chere
  3. chere -i -t mintty

ขณะนี้คุณสามารถเปิด cygwin ในไดเรกทอรีเฉพาะด้วยการคลิกเมาส์ขวาใน Windows Explorer (เมนูบริบท) และเลือก "Bash Prompt Here"

คุณยังสามารถเปิด cygwin จากไดเรกทอรีที่ระบุโดยใช้คำสั่ง windows command prompt:

  1. เปิดหน้าต่างพรอมต์คำสั่ง
  2. นำทาง ( cd) ไปยังไดเรกทอรีที่กำหนดเอง
  3. ปฏิบัติ C:\cygwin64\bin\mintty.exe C:\cygwin64\bin\env.exe CHERE_INVOKING=1 C:\cygwin64\bin\bash.exe -l

    คำสั่งนี้จะเปิด cygwin ด้วยไดเรกทอรีปัจจุบันนำมาจากพรอมต์คำสั่ง

FreeCommander

คำสั่งนี้ยังสามารถใช้เพื่อเปิด cygwin จากตัวจัดการไฟล์ที่กำหนดเองเช่น FreeCommander

หากต้องการเปิด cygwin ด้วยไดเรกทอรีปัจจุบันที่นำมาจาก FreeCommander ให้ทำดังต่อไปนี้:

  1. เครื่องมือ -> เครื่องมือโปรด -> เครื่องมือแก้ไขรายการโปรด ... (Ctrl + Shift + Y)
  2. เพิ่มแถบเครื่องมือใหม่ (+ ไอคอน) ทางลัด: แทรก

    • ชื่อ: cygwin
    • โปรแกรมหรือโฟลเดอร์: C:\cygwin64\bin\mintty.exe
    • เริ่มโฟลเดอร์: %ActivDir%
    • พารามิเตอร์: C:\cygwin64\bin\env.exe CHERE_INVOKING=1 C:\cygwin64\bin\bash.exe -l

คุณสามารถเพิ่มทางลัดที่กำหนดเองเพื่อเปิด cygwin จาก FreeCommander:

  1. เครื่องมือ -> กำหนดแป้นพิมพ์ลัด
  2. เลื่อนลงไปที่ "เครื่องมือโปรด 01" (หรือ "เครื่องมือโปรด N")
  3. กำหนดแป้นพิมพ์ลัดใหม่: ฉันใช้Ctrl+ Shift+T

การอ้างอิงที่ดี: MinTTY Wiki บทความเคล็ดลับ: การเริ่มต้นในไดเรกทอรีเฉพาะ


5

ในการสร้างทางลัด Windows ที่เปิดใช้งานเทอร์มินัล Cygwin ในไดเรกทอรีที่คุณเลือกให้ลองทำดังนี้

  • คลิกขวาที่เดสก์ท็อปของ Windows เลือก 'ใหม่' แล้วเลือก 'ทางลัด'

  • สำหรับตำแหน่งของรายการให้ป้อนข้อความต่อไปนี้เปลี่ยนminttyเส้นทางตามต้องการและแทนที่ชื่อของไดเรกทอรีที่ต้องการตามที่ระบุ

    C:\cygwin64\bin\mintty.exe /bin/sh -lc 'cd DESIRED-DIRECTORY; exec bash'
    

    ตัวอย่างเช่น OP จะใช้ข้อความต่อไปนี้:

    C:\cygwin64\bin\mintty.exe /bin/sh -lc 'cd /cygdrive/c/Users/Tom/Desktop/; exec bash'
    
  • คลิก 'ถัดไป'

  • ป้อนชื่อที่ต้องการสำหรับทางลัดและคลิก 'เสร็จสิ้น'

สามารถวางทางลัดบนเดสก์ท็อปเพื่อเปิดเทอร์มินัล Cygwin ในไดเรกทอรีที่เข้าถึงได้บ่อยๆ

แรงบันดาลใจจากวิธีการโพสต์บนวิธีการเปิดเปลือก Cygwin ที่ไดเรกทอรีเฉพาะจาก Netbeans? ที่superuser.com


4

ค้นหาไฟล์ Cygwin.bat และสร้างเนื้อหาเช่นนี้:

@echo off
set newpath=%cd:\=/%
pushd "%~dp0"
chdir bin
bash --login -i -c "cd \"%newpath%\"; exec bash"

เพิ่มเส้นทางไปยัง cygwin.bat ไปยังสภาพแวดล้อม PATH

ตอนนี้ในโฟลเดอร์ใด ๆ ที่คุณสามารถพิมพ์ไปยังแถบที่อยู่:

cygwin

นอกจากนี้คุณสามารถพิมพ์ได้เมื่อคุณอยู่ใน cmd.exe


3

ฉันใช้บรรทัดของรหัสต่อไปนี้เพื่อเริ่ม zsh ในไดเรกทอรีปัจจุบันใน Win7

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash]
@="Open Cygwin Here"
"NoWorkingDirectory"=""

[HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash\command]
@="\"C:\\Programmieren\\cygwin64\\bin\\mintty.exe\" -i /Cygwin-Terminal.ico /bin/zsh --login -c 'cd \"%V\";zsh'"

โปรดทราบว่าฉันใช้% V แทน% L หรือ% 1 (เนื่องจากทั้งคู่ไม่ได้ผลสำหรับฉัน)


3

เมื่อต้องการติดตั้งใหม่ฉันจะสร้างชื่อ "ตัวแปรสภาพแวดล้อมผู้ใช้" ของ Windows HOMEและกำหนดเส้นทางของที่ใดก็ได้ที่ "My Documents" อยู่

ตัวติดตั้ง cygwin ตรวจพบHOMEตัวแปรแปลสิ่งนี้เป็น cygpath โดยอัตโนมัติและเลือกสิ่งนี้ให้เป็นไดเรกทอรี ~ ของฉัน

สิ่งนี้ใช้ได้ดีสำหรับทุกเวิร์กสเตชันที่ฉันใช้อย่างมืออาชีพในช่วง 5 ปีที่ผ่านมา (ประมาณ 3 หรือ 4, Win7) ฉันเป็นผู้ใช้เพียงคนเดียวในเครื่องเหล่านี้ไม่สามารถพูดได้ว่าผลกระทบคืออะไร


3

ฉันได้สร้างสคริปต์แก้ไขรีจิสทรีเพื่อเปิด Cygwin ที่โฟลเดอร์ใด ๆ ที่คุณคลิกขวา มันอยู่บน GitHub ของฉัน

นี่คือ GitHub ของฉัน

RegEditโค้ดตัวอย่างจาก Github สำหรับเครื่อง 64 บิต:

REGEDIT4

[HKEY_CLASSES_ROOT\Directory\shell\CygwinHere]
@="&Cygwin Bash Here"

[HKEY_CLASSES_ROOT\Directory\shell\CygwinHere\command]
@="C:\\cygwin64\\bin\\mintty.exe -i /Cygwin-Terminal.ico C:\\cygwin64\\bin\\bash.exe --login -c \"cd \\\"%V\\\" ; exec bash -rcfile ~/.bashrc\""

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\Background\shell\CygwinHere]
@="&Cygwin Bash Here"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\Background\shell\CygwinHere\command]
@="C:\\cygwin64\\bin\\mintty.exe -i /Cygwin-Terminal.ico C:\\cygwin64\\bin\\bash.exe --login -c \"cd \\\"%V\\\" ; exec bash -rcfile ~/.bashrc\""

หากคุณได้รับ "ข้อผิดพลาดในการเข้าถึงรีจิสทรี" ข้อผิดพลาดดูคำตอบโดย @mpersico ด้านล่าง ... จะช่วยให้ฉัน 15 นาที :)
Daniel Sokolowski

2

เปิด Terminal Cygwin ในฐานะผู้ดูแลระบบ

ใน PowerShell (ใช้ช็อคโกแลต):

choco install cyg-get

ใน cygwin จะติดตั้งเมนูคลิกขวา

cyg-get install chere
chere -i

ตอนนี้คุณสามารถคลิกขวาและใช้ "Bash พร้อมท์ที่นี่" ในโฟลเดอร์ใด ๆ


1

คุณสามารถเพิ่มไอคอนลงในเชลล์ได้โดยเพิ่มIconฟิลด์ที่กำหนดเป็นพา ธ ไปยังCygwin.icoไฟล์ของคุณ

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash]
@="Cygwin"
"Icon"="\"C:\\cygwin64\\Cygwin.ico\""

[HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash\command]
@="C:\\cygwin64\\bin\\mintty.exe -e /bin/xhere /bin/bash.exe"

ฉันคิดว่าสิ่งที่จำเป็นต้องมีในการดำรงอยู่ของ xhere ก็คือการติดตั้ง chere ดังที่กล่าวไว้ในคำตอบอื่น ๆ
ซามูเอล

1

ในเครื่อง Windows ของฉันมันไม่ได้ทำ:

chere -i -t mintty

เนื่องจากเชลล์ mintty ไม่สามารถใช้งานได้ แต่คุณอาจมีตัวเลือกของเชลล์อื่น ๆ เช่น ash bash cmd dash mksh pdksh posh tcsh zsh passwd

ดังนั้นฉันจึงใช้:

chere -i -s ทุบตี


Mintty ไม่ได้เป็นเชลล์ แต่เป็นโปรแกรมจำลองเทอร์มินัล
Palec

คำถามนี้จะตอบคำถามเดิมอย่างไร
Leigh

สิ่งนี้จะให้ความช่วยเหลือแก่ผู้ที่ไม่มีมินต์ในระบบและได้รับข้อผิดพลาดเมื่อพยายามลองวิธีการแก้ปัญหาที่ให้ไว้ข้างต้นฉันได้ปฏิบัติตามวิธีการแก้ปัญหาที่ให้ไว้ข้างต้น แต่มันไม่ทำงานบนเครื่อง windows ของฉัน
user3065757

1

คุณสามารถเปิดเทอร์มินัล cygwin และเขียน: cd และหลังจากลาก n วางโฟลเดอร์ที่คุณต้องการให้ใส่


แม้ว่าวิธีนี้จะไม่สามารถแก้คำถามที่ถามได้ทั้งหมด แต่เป็นเคล็ดลับที่มีประโยชน์มาก ขอบคุณ
RoG

1

ในคำตอบที่ใช้รีจิสทรีฉันพบว่าใน Windows 2008 R2 SP1 คุณต้องปล่อยพื้นหลังออกจากเส้นทาง นอกจากนี้เนื่องจาก chere และ xhere ไม่ได้เป็นส่วนหนึ่งของ cygwin64 ต่อไปนี้เป็นวิธีแก้ปัญหาที่เหมาะกับทั้งการรวมรีจิสทรีและโซลูชัน Send To แทนที่ 'E: \ cygwin64' ด้วยตำแหน่งการติดตั้งของคุณ:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\cygwin_bash]
@="Open Cygwin Here"

[HKEY_CLASSES_ROOT\Directory\shell\cygwin_bash\command]
@="E:\\cygwin64\\bin\\mintty.exe -i /Cygwin-Terminal.ico --exec /bin/bash.exe --login -c \"cd '%1' ; exec bash -rcfile ~/.bashrc\""

0

นี่เป็นโซลูชันสตรี Cygwin64 เดียวที่ทำงานให้ฉันใน Windows 8.1:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\mintty]
@="Mintty from Here"
"NoWorkingDirectory"=""

[HKEY_CLASSES_ROOT\Directory\shell\mintty\command]
@="C:\\cygwin64\\bin\\mintty.exe -h always -e /usr/bin/ash -c 'cd  \"$(/usr/bin/cygpath \"%L\")\";  exec /usr/bin/bash  '"

ตรวจสอบให้แน่ใจว่าคุณปรับเปลี่ยนเส้นทาง 'C: \ cygwin64' ตามความจำเป็น


0

ฉันสร้างแบตช์ไฟล์และนำไปไว้ในไดเรกทอรี / bin ของ Cygwin สคริปต์นี้ได้รับการพัฒนาเพื่อให้สามารถติดตั้ง / ถอนการติดตั้งรายการรีจิสตรีเพื่อเปิดโฟลเดอร์และไดรฟ์ที่เลือกใน Cygwin สำหรับรายละเอียดดูที่ลิงค์http://with-love-from-siberia.blogspot.com/2013/12/cygwin-here.html

ปรับปรุง: วิธีนี้จะเหมือนกับคำแนะนำก่อนหน้า แต่การจัดการทั้งหมดที่มี Windows Registry จะถูกซ่อนไว้ภายในสคริปต์

ดำเนินการคำสั่งเพื่อติดตั้ง

cyghere.bat /install

ดำเนินการคำสั่งเพื่อถอนการติดตั้ง

cyghere.bat /uninstall

0

ฉันยังมีปัญหากับคอมไพล์ที่เคย "ขโมย" คำสั่ง cygwin ของฉัน - ดังนั้นฉันจำเป็นต้องเรียกใช้
C:\cygwin\bin\mintty.exe -
แต่หลังจากติดตั้งchereและดำเนินการchere -i -t mintty -f ในฐานะผู้ดูแลระบบ (ดูด้านบน) คุณสามารถใช้:
C:\cygwin\bin\mintty.exe -e /bin/xhere /bin/bash.exe "."
ฉันเพิ่มสิ่งนี้ในปุ่มรวมผู้บัญชาการเป็นปุ่มกำหนดเอง คลิกที่แผง> เพิ่ม ... ) และมันทำงานได้ดีมาก


0

สร้างไฟล์ bash ว่าmove.shซึ่งมีรหัสต่อไป C:\cygwin64\bin\run.exe -p /bin bash runFile.sh นี้ซึ่งจะเริ่ม Cygwin และดำเนินการrunFile.shอยู่ในไดเรกทอรีถังขยะของ Cygwin สมมติว่าคุณต้องการนำทางไปยังไดเรกทอรีที่ระบุว่าE:\code แล้ว runFile.sh มีรหัสต่อไปนี้cd E: cd code


0

ในที่สุดคำตอบที่เป็นอิสระจาก Cygwin ตัวเอง

นี้จะใช้ความจริงที่ว่าถ้าฉันอยู่ในไดเรกทอรีC:\\Coolและผมเรียกคำสั่งC:\\Cygwin\\bin\\mintty.exe, จะเปิดโดยอัตโนมัติในไดเรกทอรีปัจจุบันคือminttyC:\\Cool

ก่อนอื่นคุณจะต้องสร้างไฟล์C:\\Cygwin\\silent_run.vbsด้วยเนื้อหาดังต่อไปนี้:

Function EnquoteString(argument)
  EnquoteString = Chr(34) & argument & Chr(34)
End Function

arglist = ""
With WScript.Arguments
    For Each arg In .Unnamed
        ' Wscript.Echo "Unnamed: " & arg
        If InStr(arg, " ") > 0 Then
            ' arg contains a space
            arglist = arglist & " " & EnquoteString(arg)
        Else
            arglist = arglist & " " & arg
        End If
    Next
End With

CreateObject("Wscript.Shell").Run Trim( arglist ), 0, False

ถัดไปเพื่อติดตั้งคำตอบนี้คุณจะใช้ไฟล์ Windows Registry เพื่อที่จะใส่เนื้อหาของไฟล์ต่อไปนี้ลงในไฟล์ชื่อC:\\Cygwin\\AddMinttyToContextMenu.reg

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\Terminal Here]
"Icon"="\"C:\\Cygwin\\bin\\mintty.exe\""
"Position"="Middle"
@="Terminal Here"
"CommandFlags"=dword:00000020

[HKEY_CLASSES_ROOT\Directory\Background\shell\Terminal Here\Command]
@="\"C:\\Cygwin\\bin\\mintty.exe\" -w max"


[HKEY_CLASSES_ROOT\Directory\shell\Terminal Here]
"Icon"="\"C:\\Cygwin\\bin\\mintty.exe\""
"Position"="Middle"
@="Terminal Here"
"CommandFlags"=dword:00000020

[HKEY_CLASSES_ROOT\Directory\shell\Terminal Here\Command]
@="cmd.exe /c cd /d \"%V\" && wscript \"C:\\Cygwin\\silent_run.vbs\" \"C:\\Cygwin\\bin\\mintty.exe\" -w max"

ตอนนี้แก้ไขเส้นทางฮาร์ดโค้ดทั้งหมดเช่นC:\\Cygwinไปยังตำแหน่งจริงที่การติดตั้ง Cygwin ของคุณอยู่

จากนั้นเพียงเปิดไฟล์C:\\Cygwin\\AddMinttyToContextMenu.regเพื่อติดตั้งรายการรีจิสตรีใหม่ของคุณและคุณทำเสร็จแล้ว

ไฟล์ใช้C:\\Cygwin\\AddMinttyToContextMenu.regงานได้โดยเปิดไฟล์a ก่อนcmd.exeโดยเปลี่ยนเป็นไดเร็กทอรีที่คุณอยู่จากนั้นโทรC:\\Cygwin\\silent_run.vbsเพื่อเปิดC:\\Cygwin\\bin\\mintty.exeเทอร์มินัลด้วยตัวเลือกบรรทัดคำสั่ง-w maxเช่นเปิดไฟล์ให้ขยายใหญ่สุด

สคริปต์C:\\Cygwin\\silent_run.vbsจะต้องเปิดC:\\Cygwin\\bin\\mintty.exeเทอร์มินัลโดยไม่cmd.exeเปิดก่อนที่เราจะเปิด

รายการแรกของC:\\Cygwin\\AddMinttyToContextMenu.regไม่ได้ใช้C:\\Cygwin\\silent_run.vbsเพราะตามค่าเริ่มต้นHKEY_CLASSES_ROOT\Directory\Background\shellคีย์จะเปิดอยู่ในไดเรกทอรีปัจจุบันแล้วเราสามารถโทรC:\\Cygwin\\bin\\mintty.exeโดยตรงเพื่อให้มันทำงานนอกกรอบได้

อ้างอิง:

  1. เพิ่มรายการเมนูบริบทลงใน Windows Explorer สำหรับโฟลเดอร์ได้อย่างไร
  2. อาร์กิวเมนต์ commandline VBScript pass ในพา ธ ที่มีช่องว่าง
  3. จะส่งคำสั่งที่มีช่องว่างและเครื่องหมายคำพูดเป็นพารามิเตอร์เดียวไปยัง CScript ได้อย่างไร
  4. การเรียก vbscript จากไฟล์ vbscript อื่นผ่านอาร์กิวเมนต์
  5. https://ss64.com/vb/syntax-args.html
  6. ตรวจสอบว่าสตริงมีช่องว่างหรือไม่
  7. ใช้งานบรรทัดคำสั่งอย่างเงียบ ๆ ด้วย VbScript และรับเอาต์พุตหรือไม่
  8. http://www.vbsedit.com/html/6f28899c-d653-4555-8a59-49640b0e32ea.asp
  9. /superuser/62525/run-a-batch-file-in-a-completely-hidden-way
  10. วิธีการเรียกใช้สคริปต์ชุดที่ได้รับเป็นข้อโต้แย้งใน VBscript?
  11. ฉันสามารถส่งอาร์กิวเมนต์ไปยัง VBScript (ไฟล์ vbs ที่เปิดตัวด้วย cscript) ได้หรือไม่

-1
@echo off
C:
SET mypath=%~dp0
c:\cygwin\bin\bash -c "cd '%mypath%'; export CHERE_INVOKING=1; exec /bin/bash --login -i"

คัดลอกคำสั่งด้านบนในไฟล์ข้อความและบันทึกเป็น. bat ใน "โฟลเดอร์ที่คุณสนใจ" ควรเปิด cygwin ใน "โฟลเดอร์ที่คุณสนใจ"


-1

จาก @LindseyD คำตอบฉันสร้างไฟล์ BAT ง่าย ๆ ที่เปิด cygwin ในไดเรกทอรีปัจจุบันมันอาจมีประโยชน์ (สำหรับฉันมันคือ) สมมติว่าคุณมีไดเรกทอรี bin ของ cygwin ใน PATH

FOR /F %%x IN ('sh -c pwd') DO bash -l -i -c 'cd %%x; exec bash'

-1

ฉันไม่รู้ว่าทำไมฉันต้องเสียเวลาไปมาก แต่วิธีนี้ใช้ได้ผลสำหรับฉันเมื่อชนะ 10, 64 บิต:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash]
@="Open Cygwin Here"

[HKEY_CLASSES_ROOT\Directory\Background\shell\cygwin_bash\command]
@="C:\\cygwin64\\bin\\mintty.exe -i /Cygwin-Terminal.ico C:\\cygwin64\\bin\\bash.exe --login -c \"cd \\\"%V\\\" ; exec bash -rcfile ~/.bashrc\""

-1

อาจเป็นวิธีที่ง่ายที่สุด:

1) สร้างไฟล์ foo.reg

2) แทรกเนื้อหา:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\background\shell\open_mintty]
@="open mintty"

[HKEY_CLASSES_ROOT\Directory\background\shell\open_mintty\command]
@="cmd /C mintty"

3) ดำเนิน foo.reg

ตอนนี้เพียงแค่คลิกขวาในโฟลเดอร์ใด ๆ คลิกopen minttyและมันจะวางไข่มิ้นต์ในโฟลเดอร์นั้น


-2

ดีที่สุดที่จะทำเช่นด้านล่าง:

HKEY_CLASSES_ROOT\Directory\shell\BashHere
Enter Data: Bash Here

HKEY_CLASSES_ROOT\Directory\shell\BashHere\command
Enter Data: 

cmd.exe /c C:\cygwin\bin\bash.exe --login -c "cd '%1'; exec /bin/bash"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.