Mở Cygwin tại một thư mục cụ thể


226

Làm cách nào tôi có thể tạo lối tắt Cygwin sẽ mở Cygwin tại một thư mục cụ thể? Điều này sẽ cản trở việc phải gõ

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

mỗi lần tôi khởi động Cygwin.


2
tạo tệp .bat: đây là hướng dẫn computerhope.com/batch.htm
Umar Jamil

Lưu ý: Gói chere có thể cần được khởi tạo với các đặc quyền của quản trị viên. Nếu bạn bị bắt bởi điều này, và bị cám dỗ để sử dụng sudo, bạn có thể không nhận được kết quả mong đợi. Trong trường hợp này, đăng nhập như một người dùng quản trị trên máy tính windows.
dreftymac

Câu trả lời:


410

Khi bạn cài đặt Cygwin (hoặc nếu bạn đã cài đặt nó, hãy tải xuống lại và bắt đầu thiết lập lại để chạy bản cập nhật), đảm bảo rằng bạn chọn cheregói trong danh mục "Shells".

Sau khi Cygwin được khởi chạy, hãy mở một thiết bị đầu cuối Cygwin (với tư cách quản trị viên) và nhập lệnh : chere -i -t mintty -s bash.

Bây giờ bạn nên có "Bash Prompt Here" trong menu ngữ cảnh nhấp chuột phải của Windows.

( mintty là thiết bị đầu cuối mặc định của Cygwin. Nếu bạn không chọn -ttùy chọn này, "Bash Prompt Here" của bạn sẽ sử dụng cùng một thiết bị đầu cuối như Dấu nhắc lệnh của Windows, ngăn chặn thay đổi kích thước ngang.)


39
Tìm thấy tuyệt vời, cảm ơn! Tôi phát hiện ra rằng bạn có thể chỉ định thiết bị đầu cuối bạn muốn mở bằng cách sử dụng -t, ví dụ, để mở mintty bạn sử dụngchere -i -t mintty
Kevin Condon

29
Chỉ cần thử nghiệm với cygwin 64 bit (1.7.27) và dường như đã tồn tại. pro-tip: hãy nhớ khởi chạy thiết bị đầu cuối cygwin với quyền quản trị viên.
BuildTheRobots

11
Một điều nữa cần lưu ý. Nếu bạn đã làm điều này với chere -i -t mintty -fđể buộc ghi đè. Bạn vẫn sẽ cần chạy cygwin với tư cách quản trị viên.
Greg Jennings

29
Có vấn đề về quyền trên W7x64 (Lỗi (5): Quyền truy cập bị từ chối. Hive không thể ghi). Đã giải quyết bằng cách khởi chạy Cygwin với tư cách quản trị viên.
DmitrySandalov

17
Cygwin không có vỏ mặc định trong trường hợp của tôi, vì vậy, thêm vào -s bashđể thực chere -i -t mintty -s bashhiện công việc này cho tôi
Bryce Guinta

97

Đây là những gì tôi sử dụng. Nó không yêu cầu cheregói hoặc đăng ký mày mò. Hoạt động trên Windows 7.

Chuyển đến thư mục "Gửi đến" của bạn:

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

Tạo một lối tắt có tên Bash Herenày trong Targettrường:

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

Trong Windows Explorer, bạn nhấp chuột phải vào thư mục và chọn Send To > Bash Here.

Và đây là thủ thuật ngược lại, mở Windows Explorer trong thư mục bash hiện tại của bạn. Tạo bí danh này:

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

Lưu ý: cygpath -w .phần trên được đặt trong dấu tick ngược.

Bây giờ chỉ cần gõ winxtại dấu nhắc bash và Win Explorer hiện lên ở đó.

Lưu ý: Nếu winx hướng bạn đến thư mục tài liệu của bạn, hãy thử

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

3
Thủ thuật rất hay, nhưng winxbí danh không hoạt động trên thiết lập Cygwin của tôi. Tôi đã gỡ bỏ tất cả những dấu xồ nguợc và thay thế .bằng $PWDcho nó để làm việc.
not2qubit

Điều gì xảy ra nếu phím tắt (được điều chỉnh để sử dụng đường dẫn Cygwin64 trong cài đặt của tôi) mở cygwin vào thư mục người dùng của tôi? :( Có lẽ điều này chỉ hoạt động với Cygwin 32 bit?
Alex Hall

Cái này cũng đang làm việc cho tôialias winx='/cygdrive/c/Windows/explorer.exe /e,$(cygpath -wa .)'
Wakan Tanka

1
Trong cygwin 2.6.0 (trên Win 7 x64) có thể dễ dàng hơn nhiều: cygstart .mở Explorer bằng thư mục hiện tại hoặc bất kỳ cú pháp thư mục nào cygstart .., cygstart /your/pathv.v ...
244an

2
Cảnh báo: C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico C:\cygwin\bin\bash.exe -l -c "cd \"$0\" ; exec bashgiữ cho tệp xử lý mở vào $0thư mục, ngay cả sau khi bạn thay đổi thư mục làm việc sang thứ khác. Điều gì tệ hơn sinh sản bản sao của cửa sổ ( ALT+F2), ngay cả khi bạn đã thay đổi thư mục làm việc, mở một tệp xử lý khác $0. Điều này có thể can thiệp vào một số thao tác có thể muốn xóa / sửa đổi $0trong bất kỳ quy trình nào. Nếu bạn gặp lỗi 'Quyền bị từ chối' khi truy cập $0thì đây có thể là nguyên nhân
matt

33

Từ thiết bị đầu cuối cygwin, chạy lệnh này:

echo "cd your_path" >> ~/.bashrc

Tập lệnh .bashrc được chạy khi bạn mở phiên bash mới. Đoạn mã trên thay đổi thư mục your_path khi bạn mở phiên cygwin mới.


3
ĐÂY LÀ CÂU TRẢ LỜI! QUÁ DỄ.
Devin Walker

Đúng ! Điều đó thật dễ ! Bỏ phiếu lên!
Alex Byrth

19
Đây không phải là câu trả lời, vì nó không tạo ra một lối tắt sử dụng thư mục đã nói, theo yêu cầu của câu hỏi, nó thay đổi hành vi của tất cả các phương thức khởi động trình bao Cygwin. Bạn không nên thay đổi cài đặt chung (hoặc hồ sơ đăng nhập) để giải quyết vấn đề cục bộ.
Ben Voigt

Tôi đã từng sử dụng chính xác phương pháp này để nối người dùng vào tệp mật khẩu, vô tình để lại một trong các >ký tự. Sau đó tôi đăng xuất :-)
paxdiablo

@paxdiablo ouch
bschwagg 16/10/18

30

Tôi đã tạo một tệp .reg đặt tùy chọn "Mở Cygwin tại đây" trong menu ngữ cảnh nhấp chuột phải. Nó phụ thuộc vào gói "chere" Cygwin, mà bạn có thể cài đặt bằng apt-cyg nếu bạn không cài đặt nó trong thiết lập ban đầu.

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
Đối với những người đang tự hỏi làm thế nào để sử dụng điều này, chỉ cần sao chép văn bản nền màu xám và đặt nó vào một tệp văn bản có tên là "foo.reg" và nhấp đúp vào nó.
Andrew Moylan

3
+1 giải pháp tốt nhất tại đây. Và cảm ơn vì đã đề cập apt-cyg, tôi không biết về công cụ này
user11153 23/07/14

Đây chính xác là những gì tôi đang tìm kiếm và thậm chí nó còn giúp tôi với những thứ khác bởi vì ngay cả trang web của Microsoft cũng không mang lại cho tôi kết quả tương tự.
FilBot3

Tôi đã phải đổi thành "cygwin" nhưng tôi gặp lỗi này: "Không thể chạy / bin / xhere: Không có tệp hoặc thư mục như vậy"
Totty.js

@ Totty.js bạn có chắc đã cài đặt gói 'chere' trong Cygwin?
Jeutnarg

17

Đối với cygwin64 hoặc cài đặt mà không có chere, bạn có thể sử dụng lệnh sau trong mục đăng ký (giả sử các cửa sổ do đường dẫn của bạn, cũng giả sử thư mục cài đặt cygwin là c: \ cygwin64)

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

Hoạt động trên Windows 7 và 8 Tệp đăng ký có sẵn để tải xuống tại đây: 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'"

Bạn có thể giải thích tại sao bạn có 3 (x2) mục đăng ký không?
not2qubit

1
chúng dành cho các bối cảnh Directory, Drive và Background
Tom Kay

Cuối cùng, một giải pháp hiệu quả với tôi, mặc dù tôi có một số vấn đề hiểu nó hoàn toàn ;-) ['bash' sau 'exec bash']. Gợi ý: bạn có thể thay thế 3 mục bằng 1: 'Thư mục' thay vì 'Thư mục', 'Ổ đĩa' và 'Nền'.
t0r0X

chỉ với 'Thư mục', liên kết xuất hiện trong menu ngữ cảnh của ổ đĩa, nhưng không thực thi được. Tuy nhiên, tôi đã có thể cắt giảm xuống 2 mục với 'Thư mục' và 'Thư mục \ Nền'
Tom Kay

1
Đối với emacs: "C: \\ \\ Cygwin bin \\ mintty.exe -i /Cygwin-Terminal.ico / bin / bash -l -c 'emacs \" cygpath \"%V\"\ ";'
Jan Matousek

12

Nếu bạn muốn có thư mục đó làm mặc định, chỉ cần thêm một cdcâu lệnh vào ~/.profiletệp của bạn .

Những gì tôi có xu hướng làm là sử dụng phương pháp đó để đặt thư mục thông thường của mình, cộng với xác định bí danh cho các trường hợp phổ biến của tôi:

alias tom="cd /users/tom"

hoặc tương đương của bạn. Điều này cho phép tôi thay đổi thư mục rất nhanh.


Có phải bí danh đó cũng phải được thêm vào ~/.profiletập tin, hoặc chỉ chạy một lần?
iono

2
@tomeoftom, nếu bạn chỉ chạy nó trong một shell, nó sẽ chỉ ảnh hưởng đến shell đó. Nó sẽ không ảnh hưởng đến bất kỳ người nào khác mà bạn bắt đầu. Vì vậy, nếu bạn muốn nó luôn có sẵn, bạn cần đặt nó vào một trong các tệp khởi động của bạn (trong đó ~/.profilecó một khả năng).
paxdiablo

nó không hoạt động với tôi khi đưa vào ~ / .profile, nhưng ~ / .bashrc hoạt động.
zupa

@zupa, các quy tắc về việc các tệp khởi động có nguồn gốc khá phức tạp (mặc dù tất cả đều có trong bashtrang man nếu bạn đào đủ sâu). Đó là lý do tại sao tôi tuyên bố .profilenhư một khả năng.
paxdiablo

.profile cuối cùng là nguồn .bashrc để thay vào đó bạn có thể muốn thêm lệnh đó vào bashrc. (.profile không hoạt động với tôi)
laertis

8

Tôi sử dụng và Icon để khởi chạy cygwin của mình mà không cần cheregói.

  1. Tạo một lối tắt trên máy tính để bàn của tôi cho thiết bị đầu cuối cygwin.
  2. Nhấp chuột vào biểu tượng và chọn thuộc tính.
  3. Trên tab phím tắt, sử dụng mục này cho MỤC TIÊU: C:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico -c 'cd'
  4. Đối với START IN, hãy đặt đường dẫn của thư mục / thư mục nơi bạn muốn khởi chạy cygwin. I EC:\some\dir\name\here

ok 2 điều 1. việc thêm -cvào "Target" không có gì khác biệt miễn là bạn cung cấp một đường dẫn trong "Start In" 2. giải pháp này tạo ra một vấn đề với PATH. cygwin không thể trả trước /usr/local/bin:/usr/bintrong hệ thống PATH khiến cho không thể gọi một số nhị phân của nó Cấu hình có thể nằm trong /etc/profile>> `if [$ {CYGWIN_NOWINPATH-addwinpath} =" addwinpath "]; sau đó `
laertis

8

Như Two7s_clash cho biết trước tiên bạn cần cài đặt cheregói và thiết lập mintty:

  1. Mở terminal Cygwin với tư cách quản trị viên
  2. apt-cyg install chere
  3. chere -i -t mintty

Bây giờ bạn có thể mở cygwin trong thư mục cụ thể bằng cách nhấp chuột phải trong Windows Explorer (Menu ngữ cảnh) và chọn "Bash Prompt Here".

Bạn cũng có thể mở cygwin từ một thư mục cụ thể bằng dấu nhắc lệnh của windows:

  1. Mở dấu nhắc lệnh windows
  2. Điều hướng ( cd) đến thư mục tùy chỉnh
  3. Hành hình C:\cygwin64\bin\mintty.exe C:\cygwin64\bin\env.exe CHERE_INVOKING=1 C:\cygwin64\bin\bash.exe -l

    Lệnh này sẽ mở cygwin với thư mục hiện tại được lấy từ dấu nhắc lệnh.

FreeCommander

Lệnh này cũng có thể được sử dụng để mở cygwin từ trình quản lý tệp tùy chỉnh, như FreeCommander.

Để mở cygwin với thư mục hiện tại được lấy từ FreeCommander, hãy làm như sau:

  1. Công cụ -> Công cụ yêu thích -> Công cụ yêu thích chỉnh sửa ... (Ctrl + Shift + Y)
  2. Thêm thanh công cụ mới (Biểu tượng +), Phím tắt: Chèn

    • Tên: Cygwin
    • Chương trình hoặc thư mục: C:\cygwin64\bin\mintty.exe
    • Thư mục bắt đầu: %ActivDir%
    • Tham số: C:\cygwin64\bin\env.exe CHERE_INVOKING=1 C:\cygwin64\bin\bash.exe -l

Bạn có thể thêm lối tắt tùy chỉnh để mở cygwin từ FreeCommander:

  1. Công cụ -> Xác định phím tắt
  2. Cuộn xuống "Công cụ yêu thích 01" (hoặc "Công cụ yêu thích N")
  3. Gán phím tắt mới: Tôi sử dụng Ctrl+ Shift+T

Tài liệu tham khảo tuyệt vời: MinTTY Wiki, bài viết Mẹo: Bắt đầu trong một thư mục cụ thể


5

Để tạo lối tắt Windows khởi chạy thiết bị đầu cuối Cygwin trong thư mục bạn chọn, hãy thử cách sau:

  • Nhấp chuột phải vào màn hình nền Windows, chọn 'Mới', sau đó chọn 'Phím tắt'.

  • Đối với vị trí của mục, nhập văn bản sau, thay đổi minttyđường dẫn khi cần và thay thế tên của thư mục mong muốn được chỉ định.

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

    Ví dụ: OP sẽ sử dụng văn bản sau:

    C:\cygwin64\bin\mintty.exe /bin/sh -lc 'cd /cygdrive/c/Users/Tom/Desktop/; exec bash'
    
  • Nhấn tiếp'.

  • Nhập tên mong muốn cho phím tắt và nhấp vào 'Kết thúc'.

Nhiều phím tắt có thể được đặt trên màn hình nền để mở các thiết bị đầu cuối Cygwin trong các thư mục thường truy cập khác nhau.

Lấy cảm hứng từ giải pháp được đăng trên Làm thế nào để mở shell Cygwin tại một thư mục cụ thể từ Netbeans? tại superuser.com .


4

Tìm tệp Cygwin.bat và tạo nội dung như thế này:

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

Thêm đường dẫn đến cygwin.bat vào môi trường PATH.

Bây giờ trong bất kỳ thư mục nào bạn có thể nhập vào thanh địa chỉ:

cygwin

Ngoài ra, bạn có thể nhập nó khi bạn vào cmd.exe


3

Tôi đã sử dụng các dòng mã sau để bắt đầu zsh trong thư mục hiện tại trong 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'"

lưu ý rằng tôi đã sử dụng% V thay vì% L hoặc% 1 (vì cả hai đều không hoạt động với tôi)


3

Khi cần cài đặt mới, tôi tạo một "biến môi trường người dùng" Windows được đặt tên HOMEvà gán cho nó đường dẫn của bất cứ nơi nào "Tài liệu của tôi" cư trú.

Trình cài đặt cygwin phát hiện HOMEbiến, tự động dịch nó thành cygpath và chọn nó là thư mục ~ của tôi.

Điều này đã hoạt động tốt cho mọi máy trạm tôi đã sử dụng chuyên nghiệp trong 5 năm qua (khoảng 3 hoặc 4, Win7). Tôi luôn là người dùng duy nhất trên các máy này, không thể nói hiệu ứng là gì.


3

Tôi đã tạo một kịch bản chỉnh sửa sổ đăng ký để mở Cygwin tại bất kỳ thư mục nào bạn nhấp chuột phải. Đó là trên GitHub của tôi.

Đây là GitHub của tôi

RegEditMã mẫu từ Github cho máy 64 bit:

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\""

Nếu bạn nhận được "Lỗi khi truy cập sổ đăng ký." lỗi xem câu trả lời của @mpersico bên dưới ... sẽ giúp tôi tiết kiệm được 15 phút :)
Daniel Sokolowski

2

Mở terminal Cygwin với tư cách Quản trị viên

Trong powershell (sử dụng chocolatey):

choco install cyg-get

Trong cygwin sẽ cài đặt menu chuột phải

cyg-get install chere
chere -i

Bây giờ bạn có thể nhấp chuột phải và sử dụng "Bash Prompt Here" trong bất kỳ thư mục nào.


1

Bạn có thể thêm biểu tượng vào trình bao bằng cách thêm Icontrường được đặt vào đường dẫn đến Cygwin.icotệp của bạn .

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"

Tôi nghĩ rằng một điều kiện tiên quyết cho sự tồn tại của xhere là việc cài đặt chere, như đã đề cập trong các câu trả lời khác.
Samuel

1

Trên máy Windows của tôi, nó không dùng:

chere -i -t bạc hà

Bởi vì vỏ bạc hà không có sẵn, nhưng bạn có thể có nhiều loại vỏ khác như tro bash cmd dash mksh pdksh posh tcsh zsh passwd.

vì vậy tôi đã sử dụng:

chere -i -s bash


Mintty không phải là một trình bao, nó là một trình giả lập thiết bị đầu cuối.
Palec

Làm thế nào để trả lời câu hỏi ban đầu?
Leigh

Điều này sẽ cung cấp trợ giúp cho những người không có hệ thống trong hệ thống của họ và gặp lỗi khi thử giải pháp được cung cấp ở trên, tôi cũng đã làm theo giải pháp được cung cấp ở trên nhưng nó không hoạt động trên máy windows của tôi, nhưng câu trả lời của tôi đã giải quyết được vấn đề.
dùng306557

1

Bạn chỉ có thể mở thiết bị đầu cuối cygwin và viết: cd và sau khi kéo n thả thư mục bạn muốn kết thúc nhập!


Mặc dù điều này không giải quyết được hoàn toàn câu hỏi được hỏi, nhưng đây là một mẹo rất hữu ích. Cảm ơn.
RoG

1

Trong câu trả lời sử dụng sổ đăng ký, tôi thấy rằng trên Windows 2008 R2 SP1, bạn cần bỏ Nền ra khỏi đường dẫn. Hơn nữa, vì chere và xhere không phải là một phần của cygwin64, đây là một giải pháp hoạt động cho cả hai, kết hợp đăng ký và các giải pháp Gửi đến. Thay thế 'E: \ cygwin64' bằng vị trí cài đặt của bạn:

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

Đây là giải pháp đăng ký Cygwin64 duy nhất hoạt động với tôi trong 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  '"

Đảm bảo bạn sửa đổi đường dẫn 'C: \ cygwin64' của mình nếu cần.


0

Tôi đã tạo tệp bó và đặt nó vào thư mục / bin của Cygwin. Kịch bản này được phát triển để cho phép cài đặt / gỡ cài đặt các mục đăng ký để mở các thư mục và ổ đĩa đã chọn trong Cygwin. Để biết chi tiết, hãy xem liên kết http://with-love-from-siberia.blogspot.com/2013/12/cygwin-here.html .

cập nhật: Giải pháp này thực hiện giống như các đề xuất ban đầu nhưng tất cả các thao tác với Windows Registry đều bị ẩn trong tập lệnh.

Thực hiện lệnh để cài đặt

cyghere.bat /install

Thực hiện lệnh gỡ cài đặt

cyghere.bat /uninstall

0

Tôi cũng gặp vấn đề với git, đã từng "đánh cắp" các lệnh cygwin của tôi - vì vậy tôi cần chạy
C:\cygwin\bin\mintty.exe -
nhưng sau khi cài đặt cherevà thực thi chere -i -t mintty -f với tư cách quản trị viên (xem ở trên), bạn có thể chỉ cần sử dụng:
C:\cygwin\bin\mintty.exe -e /bin/xhere /bin/bash.exe "."
Tôi đã thêm nó vào Total Commander dưới dạng nút tùy chỉnh (phải nhấp vào bảng điều khiển> thêm ...) và nó hoạt động rất tốt.


0

Tạo một tệp bash cho biết move.shcó mã sau C:\cygwin64\bin\run.exe -p /bin bash runFile.sh Điều này khởi động Cygwin và thực thi runFile.shhiện tại trong thư mục bin của Cygwin Giả sử bạn muốn điều hướng đến một thư mục cụ thể, E:\code sau đó runFile.sh có mã saucd E: cd code


0

Cuối cùng, một câu trả lời độc lập với chính Cygwin.

Điều này sử dụng thực tế là, nếu tôi đang ở trong thư mục C:\\Coolvà tôi gọi lệnh C:\\Cygwin\\bin\\mintty.exe, minttysẽ tự động mở trên thư mục hiện tại, tức là , C:\\Cool.

Trước tiên, bạn sẽ cần tạo tệp C:\\Cygwin\\silent_run.vbsvới nội dung sau:

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

Tiếp theo, để cài đặt câu trả lời này, bạn sẽ sử dụng tệp Windows Registry. Đối với điều đó, chỉ cần đặt nội dung của tệp sau vào một tệp có tênC:\\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"

Bây giờ, Sửa tất cả các đường dẫn được mã hóa cứng, nghĩa là C:\\Cygwinđến vị trí thực tế nơi cài đặt Cygwin của bạn được bật.

Sau đó, chỉ cần mở tệp C:\\Cygwin\\AddMinttyToContextMenu.regđể cài đặt các mục đăng ký mới của bạn và bạn đã hoàn tất.

Tệp C:\\Cygwin\\AddMinttyToContextMenu.reghoạt động bằng cách mở đầu tiên a cmd.exe, thay đổi thư mục nơi bạn đang ở, sau đó, gọi C:\\Cygwin\\silent_run.vbsđể mở C:\\Cygwin\\bin\\mintty.exethiết bị đầu cuối với các tùy chọn dòng lệnh -w max, nghĩa là để mở tối đa hóa nó.

Kịch bản C:\\Cygwin\\silent_run.vbsđược yêu cầu để mở C:\\Cygwin\\bin\\mintty.exethiết bị đầu cuối mà không giữ đầu tiên cmd.exechúng tôi mở, mở.

Mục nhập đầu tiên C:\\Cygwin\\AddMinttyToContextMenu.regkhông sử dụng C:\\Cygwin\\silent_run.vbsvì theo mặc định, các HKEY_CLASSES_ROOT\Directory\Background\shellkhóa đã được mở trong thư mục hiện tại, sau đó, chúng ta chỉ cần gọi C:\\Cygwin\\bin\\mintty.exetrực tiếp để làm cho nó hoạt động ra khỏi hộp.

Người giới thiệu:

  1. Cách thêm mục menu ngữ cảnh vào Windows Explorer cho các thư mục
  2. VBScript truyền đối số dòng lệnh trong đường dẫn có dấu cách
  3. Làm cách nào để truyền một lệnh có khoảng trắng và dấu ngoặc kép dưới dạng một tham số cho CScript?
  4. gọi vbscript từ một tệp vbscript khác truyền đối số
  5. https://ss64.com/vb/syntax-args.html
  6. Kiểm tra xem chuỗi có chứa không gian không
  7. Chạy dòng lệnh âm thầm với VbScript và nhận đầu ra?
  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. Làm cách nào để chạy tập lệnh Batch nhận được làm đối số trên VBscript?
  11. Tôi có thể chuyển một đối số cho VBScript (tệp vbs được khởi chạy với cscript) không?

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

Sao chép các lệnh trên trong một tệp văn bản và lưu nó dưới dạng .bat trong bất kỳ "thư mục quan tâm nào của bạn". Nó sẽ mở Cygwin trong "thư mục quan tâm của bạn".


-1

dựa trên câu trả lời @LindseyD Tôi đã tạo một tệp BAT đơn giản, mở cygwin trong thư mục hiện tại, nó có thể hữu ích (đối với tôi là như vậy). Giả sử rằng bạn có thư mục bin của Cygwin trong PATH.

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

-1

Tôi không biết tại sao tôi phải lãng phí quá nhiều thời gian, nhưng điều này hiệu quả với tôi khi giành chiến thắng 10, 64 bit:

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

Có lẽ là đơn giản nhất:

1) Tạo tập tin foo.reg

2) Chèn nội dung:

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) Thực thi foo.reg

Bây giờ chỉ cần nhấp chuột phải vào bất kỳ thư mục nào, nhấp open minttyvà nó sẽ sinh ra mintty trong thư mục đó.


-2

Tốt nhất để làm như dưới đây:

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"
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.