Làm cách nào để định cấu hình ConEmu để chạy Cygwin Bash?


42

Tôi đã tạo một nhiệm vụ mới

{Bash}

thông qua thư mục nhà của tôi

/ dir "C: \ Người dùng \ TMB \"

và thêm bash như một ứng dụng

C: \ cygwin \ bin \ bash.exe

Khi tôi mở Bash, nó không thể sử dụng các tiện ích UNIX / Cygwin cơ bản. Làm cách nào để định cấu hình ConEmu để chạy Cygwin Bash?


Phiên bản ConEmu nào bạn đang thử? Ngoài ra, không phải tất cả các phiên bản bash đều hỗ trợ thư mục làm việc. Git bash - có thể, như tôi nhớ.
Maximus

Tôi không thể tìm ra cách đặt thư mục làm việc cho tôi trong hồ sơ bash của mình, nhưng tôi nghĩ rằng tôi đã tìm thấy một giải pháp tổng quát hơn bên dưới câu trả lời được đánh dấu.
TMB

ConEmu x64 120727c.x64
TMB

Với "thư mục làm việc", ý tôi là bạn chỉ định với / dir switch. BTW, bạn đã đọc câu trả lời này? superuser.com/a/482340/139371
Maximus

Câu trả lời:


48

Điều này có thể giúp đỡ người khác.

Có vẻ như phiên bản 140 310 của ConEmu tự động phát hiện CygWin Bash.

Nếu bạn đã cài đặt Cygwin sau khi bạn cài đặt ConEmu, bạn sẽ cần Tải lại ... danh sách Nhiệm vụ của mình.

  1. Chuyển đến Cài đặt ... (Win + Alt + P)
  2. Điều hướng đến danh sách Nhiệm vụ của bạn (Khởi động> Nhiệm vụ)
  3. Click vào Nạp lại ... nút.

Bây giờ bạn sẽ thấy {CygWin bash} là một trong các tùy chọn của bạn trong danh sách các tác vụ được xác định trước:

Ảnh chụp màn hình của CygWin bash trong ConEmu

PS - Nếu phương pháp này không hoạt động, hãy thử đặt lại cài đặt ConEmu của bạn (nhấp vào nút Đặt lại ... ở cuối cửa sổ Cài đặt của bạn ).


2
Và nếu Tải lạiĐặt lại không hoạt động, tôi đoán chúng ta có thể nhập đường dẫn, lệnh và các tùy chọn như trong ảnh chụp màn hình của bạn.
TMB

%SystemDrive%\cygwin64\bin\sh.exe --login -iđối với tôi trên 140304 trên Kênh xem trước.
TMB

3
Đối với tôi, nhấp vào Add default tasks...nút (ngay phía trên Reloadnút) đã thực hiện thủ thuật ...
Hanan N.

9
Lưu ý rằng sh.exe sẽ không lấy nguồn .bashrc của bạn; chỉ bash.exe sẽ làm điều đó. Vì vậy, tôi đang sử dụng lệnh%SystemDrive%\cygwin64\bin\bash.exe --login -i
John Prior

Nhận xét của JohnP Warrior thực sự rất hữu ích. Biến PATH hoàn toàn sai khi sử dụng sh.exe, nhưng với bash.exe, giờ đây nó thực sự có thể tìm thấy các ứng dụng của tôi.
flungo

7

hoặc thay vì

C:\cygwin\bin\bash.exe

sử dụng

C:\cygwin\Cygwin.bat

Tôi nghĩ đó thực sự là cách đơn giản nhất.
nguyệt quế

6

Đảm bảo rằng Bash đang nhận được một giá trị hợp lý cho $PATH; thông thường, nó thừa hưởng rằng từ bất cứ thứ gì gọi nó, nhưng ConEmu là một ứng dụng Windows, vì vậy tất cả những gì nó sẽ cung cấp là bất cứ thứ gì bạn đã đặt ra %Path%. Nói chung, nó không bao gồm các thư mục đường dẫn Cygwin, vì vậy Bash không biết tìm ở đâu ls, & c.

Cách tôi giải quyết điều này sẽ là, thông qua bất kỳ phương tiện nào ConEmu đưa ra để làm như vậy, chuyển --login -idưới dạng đối số dòng lệnh cho Bash; điều này sẽ cho nó, bạn đang chạy nó như một vỏ đăng nhập tương tác, vì vậy nó sẽ đọc /etc/profile, ~/.profile~/.bashrctrên đầu. Theo kinh nghiệm của tôi, điều đó là đủ để cho nó hợp lý $PATH; nếu điều đó không phù hợp với bạn, bạn có thể chỉ định rõ ràng bằng một dòng như PATH=/bin:/usr/bin:/usr/local/bin:[...]:$PATHtrong của bạn ~/.bashrc.


Điều này mang lại cho tôi các tiện ích mà tôi đang tìm kiếm tiếp theo, tôi muốn trỏ đến thư mục nhà bình thường của Windows, /cygdrive/c/cygwin/homevì vậy tôi đã xóa homevà tạo một đường nối với mklink -J home C:\Userstrong cmd.exe
TMB

3
Vui mừng nó đã làm công việc cho bạn. Tôi chưa bao giờ nghĩ đến việc sử dụng một điểm nối để chỉ ~ tại c: \ users \ me, nhưng tôi đã từng làm điều đó với một liên kết tượng trưng và từ kinh nghiệm đó tôi đưa ra cảnh báo sau: nếu bạn cần chạy ComboFix để dọn sạch phần mềm độc hại phá hoại trên máy của bạn, nó sẽ thổi bay mọi tập tin trong c: \ users \ you . Tôi đã mất tất cả mọi thứ trong thư mục nhà của mình theo cách đó một lần và bản sao lưu mới nhất của tôi đã được một tuần tuổi. Đừng mắc sai lầm tương tự tôi đã làm!
Aaron Miller

2

Đây là cách của tôi

Tạo một tác vụ mới trong ConEmu bằng lệnh sau

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

Giải pháp của bạn hoạt động và tôi thích có giao diện mintty.exe, nhưng bạn có thể giải thích lý do tại sao điều này hoạt động không? Đặc biệt, "&" đang làm gì ở đây?
Bác sĩ Koutheir Attouchi

0

Tôi biết đó là một câu hỏi khá cũ nhưng dù sao tôi cũng muốn chia sẻ câu hỏi này:

Để bắt đầu bash trong một thư mục làm việc cụ thể, chỉ cần đặt lệnh ví dụ SET CHERE_INVOKING=1 & "C:\cygwin\bin\bash.exe --login -i" -cur_console:t:"cygwin terminal"và chỉ định thư mục làm việc bình thường thông qua /dir "..."như được mô tả ở đây .


0

Để cung cấp các lệnh Cygwin từ bashbất kể bạn chạy nó như thế nào, cũng như từ cmdhoặc bất kỳ shell nào khác, hãy đảm bảo Pathbiến môi trường của bạn có binthêm thư mục của Cygwin .
Đi đến Control Panel > System and Security > System(phím nóng tiêu chuẩn Win+Pause), sau đó Advanced system settings > Environment variables. Đối với tất cả người dùng, hãy chỉnh sửa Pathbiến hệ thống , chỉ dành cho người dùng của bạn - chỉnh sửa (tạo nếu nó không tồn tại) Pathbiến người dùng .
Giả sử cygwinđược cài đặt tại C:\cygwin(có thể là cygwin64 cho Cygwin 64 bit), hãy thêm C:\cygwin\binvào Path. Xin lưu ý rằng nếu bạn sử dụng Pathbiến hệ thống , nếu bạn thêm Cygwin binvào lúc đầu, một số lệnh của Cygwin sẽ phủ bóng lên các biến có sẵn (ví dụ: Cygwin findsẽ được sử dụng thay vì Windows 'find). Tôi thích làm như vậy, nhưng nếu bạn không, hãy thêm Cygwin binvào cuối của bạn Path.

Vì hầu hết các câu trả lời khác cũng nói về thiết lập ConEmu, tôi cũng sẽ đưa ra ý kiến ​​cá nhân của mình.

Tôi thích chạy shell không đăng nhập. Ví dụ: trong Linux, bạn nhận được một vỏ đăng nhập khi bạn đăng nhập tại bảng điều khiển văn bản hoặc qua ssh và một vỏ tương tác không đăng nhập khi bạn mở trình giả lập thiết bị đầu cuối (xterm, konsole, v.v.).

Tác vụ {Bash} của tôi có /dir "%CD%"các tham số tác vụ để đặt thư mục làm việc thành thư mục làm việc của tab hiện tại (ví dụ: nếu tác vụ bash từ Xa). Lệnh bắt đầu bash:
%ConEmuDrive%\cygwin\bin\bash.exe -new_console:C:"%ConEmuDrive%\cygwin\Cygwin.ico"

Các --login -itùy chọn thông báo bị bỏ qua, shell sẽ bắt đầu như một vỏ tương tác không đăng nhập (vì nó không có đối số không phải tùy chọn và không có tùy chọn -c, và stdin và stdout được kết nối với các thiết bị đầu cuối, hãy tham khảo phần HÓA ĐƠN của trang bash giải trình). Nó sẽ đọc và thực thi các lệnh từ RCfile của người dùng ~/.bashrc(không phải /etc/profilehoặc ~/.bash_profilenhư một vỏ đăng nhập, do đó bạn không cần phải set CHERE_INVOKING=1liên quan đến nó /etc/profile). Vì vậy, đặt bí danh người dùng của bạn, tùy chọn shell, biến môi trường bổ sung, v.v. vào ~ / .bashrc, nơi chúng thuộc đúng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.