ฉันจะกำหนดค่า ConEmu ให้เรียกใช้ Cygwin Bash ได้อย่างไร


42

ฉันสร้างงานใหม่

{ทุบตี}

ผ่านไดเรกทอรีบ้านของฉัน

/ dir "C: \ Users \ TMB \"

และเพิ่ม bash เป็นแอปพลิเคชัน

C: \ Cygwin \ bin \ bash.exe

เมื่อฉันเปิด Bash จะไม่สามารถใช้ยูทิลิตี UNIX / Cygwin พื้นฐานได้ ฉันจะกำหนดค่า ConEmu ให้เรียกใช้ Cygwin Bash ได้อย่างไร


คุณกำลังลองรุ่น ConEmu อะไร นอกจากนี้บางรุ่นทุบตีสนับสนุนไดเรกทอรีการทำงาน Git bash - can อย่างที่ฉันจำได้
Maximus

ฉันไม่สามารถหาวิธีตั้งค่าไดเรกทอรีการทำงานในโปรไฟล์ทุบตีของฉัน แต่ฉันคิดว่าฉันพบวิธีแก้ไขปัญหาทั่วไปด้านล่างคำตอบที่ทำเครื่องหมายไว้
TMB

ConEmu x64 120727c.x64
TMB

ด้วย "ไดเรกทอรีทำงาน" ฉันหมายถึงสิ่งที่คุณระบุด้วยสวิตช์ / dir BTW คุณอ่านคำตอบนี้หรือไม่? superuser.com/a/482340/139371
Maximus

คำตอบ:


48

สิ่งนี้อาจช่วยผู้อื่น

ดูเหมือนว่ารุ่น 140310 ของ ConEmu จะตรวจจับ CygWin Bash โดยอัตโนมัติ

หากคุณติดตั้ง Cygwin หลังจากติดตั้ง ConEmu คุณจะต้องโหลดซ้ำ...รายการงานของคุณ

  1. ไปที่การตั้งค่า ... (Win + Alt + P)
  2. นำทางไปยังรายการงานของคุณ(เริ่มต้น> งาน)
  3. คลิกที่โหลด ...ปุ่ม

ตอนนี้คุณควรเห็น{CygWin bash}เป็นหนึ่งในตัวเลือกของคุณในรายการงานที่กำหนดไว้ล่วงหน้า:

สกรีนช็อตของ CygWin bash ใน ConEmu

PS - หากวิธีนี้ใช้งานไม่ได้ลองรีเซ็ตการตั้งค่า ConEmu ของคุณ (คลิกปุ่มรีเซ็ต ...ที่ด้านล่างของหน้าต่างการตั้งค่าของคุณ)


2
และหากการโหลดซ้ำและการรีเซ็ตไม่ทำงานฉันคิดว่าเราสามารถป้อนเส้นทางคำสั่งและตัวเลือกตามที่แสดงในภาพหน้าจอของคุณ
TMB

%SystemDrive%\cygwin64\bin\sh.exe --login -iสำหรับฉันใน140304ในช่องแสดงตัวอย่าง
TMB

3
สำหรับผมการคลิกที่Add default tasks...ปุ่ม (ขวาข้างต้นReloadปุ่ม) ได้เคล็ดลับ ...
Hanan N.

9
โปรดทราบว่า sh.exe จะไม่ส่งแหล่งข้อมูล. bashrc ของคุณ bash.exe เท่านั้นที่จะทำเช่นนั้น ดังนั้นฉันจึงใช้คำสั่ง%SystemDrive%\cygwin64\bin\bash.exe --login -i
จอห์นก่อนหน้า

ความคิดเห็นของ @ JohnPrior มีประโยชน์มากจริง ๆ ตัวแปร PATH ผิดทั้งหมดเมื่อใช้ sh.exe แต่ด้วย bash.exe ตอนนี้สามารถหาแอปพลิเคชันของฉันได้แล้ว
flungo

7

หรือแทน

C:\cygwin\bin\bash.exe

ใช้

C:\cygwin\Cygwin.bat

ฉันคิดว่านั่นเป็นวิธีที่ง่ายที่สุด
เรน

6

ตรวจสอบให้แน่ใจว่า Bash ได้รับคุณค่าที่เหมาะสมสำหรับ$PATH; มักจะได้รับมรดกจากสิ่งที่เรียกมันว่า แต่ ConEmu คือโปรแกรม Windows %Path%ดังนั้นสิ่งที่มันเป็นไปเพื่อให้เป็นสิ่งที่คุณได้กำหนดไว้สำหรับ โดยทั่วไปที่ไม่มีไดเรกทอรีเส้นทางของ Cygwin ดังนั้น Bash จึงไม่ทราบว่าจะต้องค้นหาที่ไหนls& c

วิธีที่ฉันจะแก้ปัญหานี้คือการทำสิ่งใดก็ตามที่ ConEmu เสนอให้ทำผ่าน--login -iอาร์กิวเมนต์บรรทัดคำสั่งไปยัง Bash นี้จะบอกว่าคุณกำลังใช้มันเป็นเปลือกเข้าสู่ระบบแบบโต้ตอบจึงจะอ่าน/etc/profile, ~/.profileและ~/.bashrcในการเริ่มต้น จากประสบการณ์ของผมที่ได้รับเพียงพอที่จะให้มันเหมาะสม$PATH; ถ้าไม่ได้ผลสำหรับคุณคุณสามารถระบุอย่างชัดเจนมีเส้นเหมือนในของคุณPATH=/bin:/usr/bin:/usr/local/bin:[...]:$PATH~/.bashrc


สิ่งนี้ทำให้ฉันมีสาธารณูปโภคที่ฉันกำลังมองหาต่อไปฉันต้องการที่จะชี้ไปที่ไดเรกทอรีบ้าน windows ของฉันตามปกติไม่ได้/cygdrive/c/cygwin/homeดังนั้นฉันจึงลบhomeและทำชุมทางด้วยmklink -J home C:\Usersใน cmd.exe
TMB

3
ดีใจที่ได้ทำงานให้คุณ ฉันไม่เคยคิดที่จะใช้จุดเชื่อมต่อที่จุด ~ ที่ c: \ users \ me แต่ฉันเคยใช้ symlink และจากประสบการณ์นั้นฉันให้คำเตือนต่อไปนี้แก่คุณ: หากคุณจำเป็นต้องเรียกใช้ ComboFix เพื่อล้างมัลแวร์ การรบกวนบนเครื่องของคุณจะทำให้ไฟล์ใด ๆ ใน c: \ users \ youหายไป ฉันทำทุกอย่างหายไปในไดเรกทอรีบ้านของฉันด้วยวิธีนี้และการสำรองข้อมูลใหม่ล่าสุดของฉันคือสัปดาห์เก่า อย่าทำผิดแบบเดียวกับที่ฉันทำ!
แอรอนมิลเลอร์

2

นี่คือวิธีของฉัน

สร้างงานใหม่ใน ConEmu ด้วยคำสั่งดังต่อไปนี้

set HOME=C:\Home & "C:\Home\Applications\cygwin64\bin\mintty.exe" -i /Cygwin-Terminal.ico -

โซลูชันของคุณใช้งานได้และฉันชอบที่มีอินเทอร์เฟซ mintty.exe แต่คุณช่วยอธิบายได้ไหมว่าทำไมมันถึงใช้ได้ โดยเฉพาะอย่างยิ่ง "&" กำลังทำอะไรที่นี่
ดร. Koutheir Attouchi

0

ฉันรู้ว่าเป็นคำถามที่ค่อนข้างเก่า แต่ฉันต้องการแบ่งปันนี้:

การเริ่มต้นการทุบตีภายในไดเรกทอรีการทำงานที่เฉพาะเจาะจงเพียงแค่ตั้งคำสั่งเช่นการSET CHERE_INVOKING=1 & "C:\cygwin\bin\bash.exe --login -i" -cur_console:t:"cygwin terminal"และระบุไดเรกทอรีการทำงานได้ตามปกติผ่านทาง/dir "..."ตามที่อธิบายไว้ที่นี่


0

ในการทำให้คำสั่ง Cygwin พร้อมใช้งานbashไม่ว่าคุณจะรันอย่างไรรวมถึงจากcmdหรือเชลล์อื่น ๆ ตรวจสอบให้แน่ใจว่าPathตัวแปรสภาพแวดล้อมของคุณได้binเพิ่มไดเรกทอรีของ Cygwin แล้ว
ไปที่Control Panel > System and Security > System(ฮอตมาตรฐานWin+Pause) Advanced system settings > Environment variablesแล้ว สำหรับผู้ใช้ทั้งหมดให้แก้ไขPathตัวแปรระบบเฉพาะสำหรับผู้ใช้ของคุณ - แก้ไข (สร้างหากไม่มีอยู่) Pathตัวแปรผู้ใช้
สมมติว่าcygwinมีการติดตั้งที่C:\cygwin(อาจจะ cygwin64 สำหรับ 64 บิต Cygwin), เพิ่มไปยังC:\cygwin\bin Pathโปรดระวังว่าถ้าคุณใช้Pathตัวแปรระบบหากคุณเพิ่ม Cygwin binในตอนแรกคำสั่งของ Cygwin จะเป็นเงาในตัว (เช่น Cygwin findจะถูกใช้แทน Windows 'find) ฉันชอบที่จะทำเช่นนั้น แต่ถ้าคุณทำไม่ได้เพิ่ม Cygwin ของในตอนท้ายของคุณbinPath

เนื่องจากคำตอบอื่น ๆ ส่วนใหญ่พูดคุยเกี่ยวกับการติดตั้ง ConEmu ด้วยฉันจะให้ความเห็นส่วนตัวเช่นกัน

ฉันชอบเรียกใช้เชลล์ที่ไม่ใช่การเข้าสู่ระบบ ตัวอย่างเช่นใน Linux คุณจะได้รับล็อกอินเชลล์เมื่อคุณล็อกอินที่คอนโซลข้อความหรือผ่าน ssh และเชลล์แบบโต้ตอบที่ไม่ใช่การเข้าสู่ระบบเมื่อคุณเปิดเทอร์มินัลอีมูเลเตอร์ (xterm, konsole ฯลฯ )

งาน {Bash} ของฉันมี/dir "%CD%"พารามิเตอร์งานเพื่อตั้งค่าไดเรกทอรีการทำงานเป็นไดเรกทอรีการทำงานของแท็บปัจจุบัน (เช่นถ้างานทุบตีจาก Far) คำสั่งเพื่อเริ่มทุบตี:
%ConEmuDrive%\cygwin\bin\bash.exe -new_console:C:"%ConEmuDrive%\cygwin\Cygwin.ico"

--login -iตัวเลือกการแจ้งเตือนจะถูกละเว้นเชลล์จะเริ่มต้นเป็นเชลล์แบบโต้ตอบที่ไม่ใช่การเข้าสู่ระบบ (เนื่องจากไม่มีอาร์กิวเมนต์ที่ไม่ใช่ตัวเลือกและไม่มีตัวเลือก -c และ stdin และ stdout เชื่อมต่อกับเทอร์มินัลดูส่วน INVOCATION ของ manpage ของ bash คำอธิบาย) มันจะอ่านและดำเนินการคำสั่งจากผู้ใช้ rcfile ~/.bashrc(ไม่ใช่/etc/profileหรือ~/.bash_profileเป็นเชลล์การเข้าสู่ระบบดังนั้นคุณไม่จำเป็นต้องset CHERE_INVOKING=1เกี่ยวข้องกับการพิจารณา/etc/profileเท่านั้น) ดังนั้นให้ใส่นามแฝงผู้ใช้ตัวเลือกเชลล์ตัวแปรสภาพแวดล้อมเพิ่มเติมและอื่น ๆ ไปที่ ~ / .bashrc ซึ่งเป็นสมาชิกของพวกเขาอย่างถูกต้อง

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