Otwórz Cygwin w określonym folderze

226

Jak mogę utworzyć skrót Cygwin, który otworzy Cygwin w określonym folderze? Pozwoliłoby to uniknąć wpisywania

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

za każdym razem, gdy uruchamiam Cygwin.

Randomblue
źródło
2
utwórz plik .bat: oto samouczek computerhope.com/batch.htm
Umar Jamil
Uwaga: może być konieczne utworzenie instancji pakietu chere z uprawnieniami administratora. Jeśli zostaniesz przyłapany na tym i pokusisz się o jego użycie sudo, możesz nie otrzymać oczekiwanego rezultatu. W takim przypadku zaloguj się jako administrator na komputerze z systemem Windows.
dreftymac

Odpowiedzi:

410

Po zainstalowaniu Cygwin (lub jeśli już go zainstalowałeś, pobierz go ponownie i ponownie uruchom instalatora, aby uruchomić aktualizację), upewnij się, że wybierasz cherepakiet w kategorii „Shells”.

Po Cygwin jest uruchomiona, otwórz terminal Cygwin (jako administrator) i wpisz polecenie: chere -i -t mintty -s bash.

Teraz powinieneś mieć „Bash Monituj tutaj” w menu kontekstowym Windows prawym przyciskiem myszy.

( mintty jest domyślnym terminalem Cygwin. Jeśli nie wybierzesz go z tą -topcją, twój „Bash Prompt Here” użyje tego samego terminala, co wiersz poleceń systemu Windows, co zapobiega zmianie rozmiaru w poziomie).

two7s_clash
źródło
39
Niesamowite znalezisko, dzięki! Odkryłem, że możesz określić terminal, który chcesz otworzyć -t, np. Aby otworzyć mięty, których używaszchere -i -t mintty
Kevin Condon
29
Właśnie przetestowany z 64-bitowym cygwinem (1.7.27) i wydaje się, że Chere już istnieje. pro-tip: pamiętaj, aby uruchomić terminal cygwin z uprawnieniami administratora.
BuildTheRobots
11
Jeszcze jedna rzecz do zapamiętania. Jeśli już to zrobiłeś, chere -i -t mintty -faby wymusić zastąpienie. Nadal będziesz musiał uruchomić cygwin również jako administrator.
Greg Jennings
29
Wystąpiły problemy z uprawnieniami na W7x64 (Błąd (5): Odmowa dostępu. Hive nie jest zapisywalny). Rozwiązane przez uruchomienie Cygwin jako administrator.
DmitrySandalov
17
Cygwin nie miał domyślnej powłoki w moim przypadku, więc dodanie -s bashmake chere -i -t mintty -s bashsprawiło, że to zadziałało dla mnie
Bryce Guinta
97

Oto czego używam. Nie wymaga cheremajsterkowania pakietu ani rejestru. Działa w systemie Windows 7.

Przejdź do folderu „Wyślij do”:

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

Utwórz skrót Bash Hereo tej nazwie w Targetpolu:

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

W Eksploratorze Windows kliknij prawym przyciskiem myszy folder i wybierz Send To > Bash Here.

A oto odwrotna sztuczka, otwieranie Eksploratora Windows w bieżącym reż. Utwórz ten alias:

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

Uwaga: cygpath -w .powyższa część jest ujęta w tyki.

Teraz wystarczy wpisać winxpolecenie bash, a pojawi się Win Explorer.

Uwaga: Jeśli winx przekieruje cię do folderu dokumentów, spróbuj

alias winx='/cygdrive/c/Windows/explorer.exe /e,`cygpath -w $PWD`'
LindseyD
źródło
3
Bardzo fajna sztuczka, ale winxalias nie działał w mojej konfiguracji Cygwin. Musiałem usunąć obie backslashy i wymienić .z $PWDgo do pracy.
not2qubit
Co się stanie, jeśli skrót (dostosowany do korzystania ze ścieżki Cygwin64 mojej instalacji) otworzy cygwin do mojego folderu użytkownika? :( Może to działa tylko z 32-bitowym Cygwinem?
Alex Hall
Ten również działa dla mniealias winx='/cygdrive/c/Windows/explorer.exe /e,$(cygpath -wa .)'
Wakan Tanka
1
W Cygwin 2.6.0 (na Win 7 x64) można to zrobić o wiele łatwiej: cygstart .aby otworzyć Eksploratora z bieżącego folderu, ani składni folderu cygstart .., cygstart /your/pathetc ...
244an
2
Ostrzeżenie: C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico C:\cygwin\bin\bash.exe -l -c "cd \"$0\" ; exec bashutrzymuje uchwyt pliku otwarty do $0katalogu, nawet po zmianie katalogu roboczego na coś innego. Co gorsza, spawnująca się kopia okna ( ALT+F2), nawet jeśli już zmieniłeś katalog roboczy, otwiera kolejny uchwyt pliku $0. Może to zakłócać niektóre operacje, które mogą wymagać usunięcia / modyfikacji $0w dowolnym procesie. Jeśli pojawi się błąd „Odmowa zezwolenia” podczas uzyskiwania dostępu, $0może to być przyczyna
mat
33

Z terminalu cygwin uruchom następujące polecenie:

echo "cd your_path" >> ~/.bashrc

Skrypt .bashrc jest uruchamiany po otwarciu nowej sesji bash. Powyższy kod wraz ze zmianą katalogu your_path po otwarciu nowej sesji cygwin.

bschwagg
źródło
3
TO ODPOWIEDŹ! TAK ŁATWO.
Devin Walker
Tak ! Tołatwe ! Głosować !
Alex Byrth,
19
To nie jest odpowiedź, ponieważ nie tworzy skrótu, który używa wspomnianego katalogu, jak wymaga tego pytanie, zmienia zachowanie wszystkich metod uruchamiania powłoki Cygwin. Nie należy zmieniać ustawienia globalnego (lub profilu logowania) w celu rozwiązania lokalnego problemu.
Ben Voigt,
Kiedyś użyłem dokładnie tej metody, aby dołączyć użytkownika do pliku hasła, przypadkowo pomijając jeden ze >znaków. Następnie wylogowałem się :-)
paxdiablo
@paxdiablo ouch
bschwagg
30

Zrobiłem plik .reg, który umieszcza opcję „Otwórz Cygwin tutaj” w menu kontekstowym prawym przyciskiem myszy. Zależy to od pakietu „chere” Cygwina, który możesz zainstalować za pomocą apt-cyg, jeśli nie zainstalowałeś go w początkowej konfiguracji.

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"
John Peter Thompson Garcés
źródło
7
Dla tych, którzy zastanawiają się, jak tego użyć, po prostu skopiuj tekst w szarym tle i umieść go w pliku tekstowym o nazwie „foo.reg” i kliknij go dwukrotnie.
Andrew Moylan,
3
+1 najlepsze rozwiązanie tutaj. I dziękuję za wzmiankę apt-cyg, że nie wiedziałem o tym narzędziu
user11153
Właśnie tego szukałem, a nawet pomogło mi to w innych sprawach, ponieważ nawet witryna Microsoft nie dała mi tego samego rezultatu.
FilBot3
Musiałem zmienić na „cygwin”, ale pojawia się błąd: „Nie udało się uruchomić / bin / xhere: brak takiego pliku lub katalogu”
Totty.js,
@ Totty.js czy na pewno zainstalowałeś pakiet „chere” w Cygwin?
Jeutnarg,
17

W przypadku instalacji cygwin64 lub instalacji bez chere można użyć następującego polecenia we wpisie rejestru (zakładając, że Windows zależy od ścieżki, zakładając również, że katalog instalacyjny cygwin to c: \ cygwin64)

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

Działa na plikach rejestru systemu Windows 7 i 8 dostępnych do pobrania tutaj: 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'"
Tom Kay
źródło
Czy możesz wyjaśnić, dlaczego masz 3 wpisy rejestru (x2)?
not2qubit
1
dotyczą kontekstów Directory, Drive i Background
Tom Kay
Wreszcie jedno rozwiązanie, które zadziałało, chociaż mam pewne problemy ze zrozumieniem go całkowicie ;-) [„bash” po „exec bash”]. Wskazówka: możesz zamienić 3 wpisy na 1: „Folder” zamiast „Katalog”, „Dysk” i „Tło”.
t0r0X
po prostu „Folder”, link pojawia się w menu kontekstowym napędu, ale nie działa. Udało mi się jednak ograniczyć do 2 pozycji za pomocą „Folderu” i „Katalogu \ Tła”
Tom Kay
1
Dla emacsa: "C: \\ cygwin \\ bin \\ mintty.exe -i /Cygwin-Terminal.ico / bin / bash -l -c 'emacs \" cygpath \"%V\"\ ";'"
Jan Matousek
12

Jeśli chcesz ustawić ten katalog jako domyślny, po prostu dodaj cdinstrukcję do swojego ~/.profilepliku.

To, co zwykle robię, to użycie tej metody do ustawienia mojego zwykłego katalogu, a także zdefiniowanie aliasów dla moich typowych przypadków:

alias tom="cd /users/tom"

lub twój odpowiednik. To pozwala mi bardzo szybko zmieniać katalogi.

paxdiablo
źródło
Czy ten alias należy również dodać do ~/.profilepliku, czy po prostu uruchomić raz?
iono
2
@tomeoftom, jeśli po prostu uruchomisz to w powłoce, wpłynie to tylko na tę powłokę. Nie wpłynie to na żadne inne, które zaczniesz. Tak więc, jeśli chcesz, aby był zawsze dostępny, musisz umieścić go w jednym ze swoich plików startowych (z czego ~/.profilejest jedna możliwość).
paxdiablo
nie działało dla mnie po włożeniu do ~ / .profile, ale ~ / .bashrc działało.
zupa
@zupa, zasady dotyczące tego, które pliki startowe są pozyskiwane, są dość skomplikowane (chociaż wszystko znajduje się na bashstronie man, jeśli kopiesz wystarczająco głęboko). Dlatego podałem .profilejako jedną z możliwości.
paxdiablo,
.profile ostatecznie pozyskuje .bashrc, więc możesz chcieć dołączyć to polecenie do bashrc. (.profile nie działało dla mnie)
laertis
8

Używam i Icon do uruchomienia mojego cygwina bez cherepakietu.

  1. Utwórz skrót na moim pulpicie do terminalu cygwin.
  2. Kliknij prawym przyciskiem myszy ikonę i wybierz właściwości.
  3. Na karcie skrótu użyj tego dla CELU: C:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico -c 'cd'
  4. Aby rozpocząć, wpisz ścieżkę do katalogu dir / folder, w którym chcesz uruchomić cygwin. to znaczyC:\some\dir\name\here
Doug
źródło
ok 2 rzeczy 1. dołączenie -cw „Cel” nie ma znaczenia, o ile podasz ścieżkę w „Rozpocznij w” 2. z tym rozwiązaniem jest problem PATH. cygwin nie jest w stanie dodać /usr/local/bin:/usr/bindo ścieżki PATH systemu, nie pozostawiając możliwości wywołania niektórych swoich plików binarnych Konfiguracja prawdopodobnie znajduje się w /etc/profile>> `if [$ {CYGWIN_NOWINPATH-addwinpath} =" addwinpath "]; następnie `
laertis
8

Jak powiedział two7s_clash, musisz najpierw zainstalować cherepakiet i skonfigurować mintty:

  1. Otwórz terminal Cygwin jako administrator
  2. apt-cyg install chere
  3. chere -i -t mintty

Możesz teraz otworzyć cygwin w określonym katalogu prawym przyciskiem myszy w Eksploratorze Windows (menu kontekstowe) i wybrać „Podpowiedź tutaj”.

Możesz również otworzyć cygwin z określonego katalogu za pomocą wiersza polecenia systemu Windows:

  1. Otwórz wiersz polecenia systemu Windows
  2. Przejdź ( cd) do katalogu niestandardowego
  3. Wykonać C:\cygwin64\bin\mintty.exe C:\cygwin64\bin\env.exe CHERE_INVOKING=1 C:\cygwin64\bin\bash.exe -l

    To polecenie otworzy cygwin z bieżącym katalogiem pobranym z wiersza polecenia.

FreeCommander

Tego polecenia można także użyć do otwarcia cygwina z niestandardowego menedżera plików, takiego jak FreeCommander.

Aby otworzyć cygwin z bieżącym katalogiem pobranym z FreeCommander, wykonaj następujące czynności:

  1. Narzędzia -> Ulubione narzędzia -> Edytuj ulubione narzędzia ... (Ctrl + Shift + Y)
  2. Dodaj nowy pasek narzędzi (ikona +), Skrót: Wstaw

    • Imię: cygwin
    • Program lub folder: C:\cygwin64\bin\mintty.exe
    • Uruchom folder: %ActivDir%
    • Parametr: C:\cygwin64\bin\env.exe CHERE_INVOKING=1 C:\cygwin64\bin\bash.exe -l

Możesz dodać niestandardowy skrót, aby otworzyć cygwin z FreeCommander:

  1. Narzędzia -> Zdefiniuj skróty klawiaturowe
  2. Przewiń w dół do „Ulubionego narzędzia 01” (lub „Ulubionego narzędzia N”)
  3. Przypisz nowy klawisz skrótu: Używam Ctrl+ Shift+T

Świetna referencja: MinTTY Wiki, artykuł Wskazówki: Uruchamianie w określonym katalogu

nexayq
źródło
5

Aby utworzyć skrót systemu Windows, który uruchamia terminal Cygwin w wybranym przez siebie katalogu, spróbuj wykonać następujące czynności:

  • Kliknij pulpit systemu Windows prawym przyciskiem myszy, wybierz „Nowy”, a następnie „Skrót”.

  • Aby zlokalizować element, wprowadź następujący tekst, zmieniając minttyścieżkę w razie potrzeby i podstawiając nazwę żądanego katalogu, tam gdzie jest wskazany.

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

    Na przykład PO użyłby następującego tekstu:

    C:\cygwin64\bin\mintty.exe /bin/sh -lc 'cd /cygdrive/c/Users/Tom/Desktop/; exec bash'
    
  • Kliknij Następny'.

  • Wprowadź żądaną nazwę skrótu i ​​kliknij „Zakończ”.

Na pulpicie można umieścić wiele skrótów, aby otworzyć terminale Cygwin w różnych często używanych katalogach.

Zainspirowany rozwiązaniem opublikowanym na stronie Jak otworzyć powłokę Cygwin w określonym katalogu z Netbeans? na superuser.com .

Patrick Kelly
źródło
4

Znajdź plik Cygwin.bat i twórz takie treści:

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

Dodaj ścieżkę do cygwin.bat do PATH środowiska.

Teraz w dowolnym folderze możesz wpisać pasek adresu:

cygwin

Możesz także wpisać go w cmd.exe

Geografia
źródło
3

Użyłem następujących wierszy kodu, aby uruchomić Zsh w bieżącym katalogu w 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'"

zauważ, że użyłem% V zamiast% L lub% 1 (ponieważ oba nie działały dla mnie)

H. Hess
źródło
3

Gdy potrzebna jest nowa instalacja, tworzę nazwaną „zmienną środowiskową użytkownika” systemu Windows HOMEi przypisuję jej ścieżkę do miejsca, w którym znajdują się „Moje dokumenty”.

Instalator cygwin wykrywa HOMEzmienną, automatycznie tłumaczy ją na ścieżkę cygpath i wybiera ją jako mój katalog ~.

Działa to dobrze na każdym stanowisku, z którego korzystałem zawodowo przez ostatnie 5 lat (około 3 lub 4, Win7). Zawsze byłem jedynym użytkownikiem tych maszyn, nie mogę powiedzieć, jaki jest efekt.

Adam.at.Eililon
źródło
3

Zrobiłem skrypt edycji rejestru, aby otworzyć Cygwin w dowolnym folderze klikniętym prawym przyciskiem myszy. Jest na moim GitHubie.

Oto mój GitHub

Przykładowy RegEditkod z Github dla komputerów 64-bitowych:

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\""
umer936
źródło
Jeśli pojawi się komunikat „Błąd dostępu do rejestru”. błąd patrz odpowiedź @mpersico poniżej ... zaoszczędziłoby mi 15 minut :)
Daniel Sokolowski
2

Otwórz terminal Cygwin jako Administrator

W PowerShell (przy użyciu Chocolatey):

choco install cyg-get

W cygwin zainstaluje menu prawym przyciskiem myszy

cyg-get install chere
chere -i

Teraz możesz kliknąć prawym przyciskiem myszy i użyć polecenia „Bash Monituj tutaj” w dowolnym folderze.

Jonathan
źródło
1

Możesz dodać ikonę do powłoki, dodając Iconpole ustawione do ścieżki do Cygwin.icopliku.

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"
STEELIX
źródło
Myślę, że warunkiem istnienia Xhere jest instalacja Chere, jak wspomniano w innych odpowiedziach.
Samuel
1

Na moim komputerze z systemem Windows nie wymagało:

chere -i -t mintty

Ponieważ miętowa skorupa nie była dostępna, ale możesz mieć wybór różnych innych powłok, takich jak ash bash cmd dash mksh pdksh posh tcsh zsh passwd.

więc użyłem:

chere -i -s bash

użytkownik3065757
źródło
Mintty nie jest powłoką, jest emulatorem terminala.
Palec,
Jak to odpowiada na pierwotne pytanie?
Leigh,
Zapewni to pomoc tym, którzy nie mają mennicy w swoim systemie i otrzymają błąd przy próbie wypróbowania rozwiązania podanego powyżej, ja również zastosowałem się do rozwiązania podanego powyżej, ale to nie działało na moim komputerze z systemem Windows, ale moja odpowiedź rozwiązała problem.
user3065757,
1

Możesz po prostu otworzyć terminal cygwin i napisać: cd, a po przeciągnięciu n upuść folder, w którym chcesz zakończyć!

Panagiotis
źródło
Chociaż nie rozwiązuje to w pełni zadanego pytania, jest to bardzo przydatna wskazówka. Dzięki.
RoG
1

W odpowiedzi, która korzysta z rejestru, stwierdziłem, że w systemie Windows 2008 R2 z dodatkiem SP1 musisz usunąć tło ze ścieżki. Ponadto, ponieważ chere i xhere nie są częścią cygwin64, oto rozwiązanie, które działa zarówno na połączenie rejestru i rozwiązań Send To. Zamień „E: \ cygwin64” na swoją lokalizację instalacji:

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\""
Mpersico
źródło
0

To jedyne rozwiązanie rejestru Cygwin64, które działało dla mnie w systemie 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  '"

Upewnij się, że zmodyfikowałeś ścieżkę „C: \ cygwin64” w razie potrzeby.

Smyrnian
źródło
0

Utworzyłem plik wsadowy i umieściłem go w katalogu / bin Cygwin. Ten skrypt został opracowany, aby umożliwić instalowanie / odinstalowywanie wpisów rejestru służących do otwierania wybranych folderów i dysków w Cygwin. Aby uzyskać szczegółowe informacje, patrz link http://with-love-from-siberia.blogspot.com/2013/12/cygwin-here.html .

aktualizacja: To rozwiązanie działa tak samo, jak wczesne sugestie, ale wszystkie manipulacje za pomocą rejestru Windows są ukryte w skrypcie.

Wykonaj polecenie, aby zainstalować

cyghere.bat /install

Wykonaj polecenie odinstalowania

cyghere.bat /uninstall
jsxt
źródło
0

Miałem też problem z gitem, który kiedyś „kradł” moje polecenia cygwin - więc musiałem uruchomić,
C:\cygwin\bin\mintty.exe -
ale po zainstalowaniu cherei uruchomieniu chere -i -t mintty -f jako administrator (patrz wyżej), możesz po prostu użyć:
C:\cygwin\bin\mintty.exe -e /bin/xhere /bin/bash.exe "."
dodałem to w Total Commander jako przycisk niestandardowy (prawy kliknij panel> dodaj ...) i działa bardzo dobrze.

Jakub Michalko
źródło
0

Utwórz plik bash powiedz, move.shktóry ma następujący kod C:\cygwin64\bin\run.exe -p /bin bash runFile.sh To uruchamia Cygwin i wykonuje runFile.shteraźniejszość w katalogu bin Cygwin Załóżmy, że chcesz przejść do określonego katalogu powiedz, że E:\code następnie runFile.sh ma następujący kodcd E: cd code

LeelaPrasad4648
źródło
0

Wreszcie odpowiedź niezależna od samego Cygwina.

Wykorzystuje to fakt, że jeśli jestem w katalogu C:\\Cooli wywołuję polecenie C:\\Cygwin\\bin\\mintty.exe, minttyautomatycznie otworzy się w bieżącym katalogu, tj.C:\\Cool .

Najpierw musisz utworzyć plik C:\\Cygwin\\silent_run.vbso następującej treści:

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

Następnie, aby zainstalować tę odpowiedź, użyjesz pliku rejestru Windows. W tym celu wystarczy umieścić zawartość następującego pliku w pliku o nazwieC:\\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"

Teraz napraw wszystkie ścieżki zakodowane na stałe, tj. C:\\Cygwin Do rzeczywistej lokalizacji, w której jest zainstalowana instalacja Cygwin.

Następnie wystarczy otworzyć plik C:\\Cygwin\\AddMinttyToContextMenu.reg aby zainstalować nowe wpisy rejestru i gotowe.

Plik C:\\Cygwin\\AddMinttyToContextMenu.regdziała, otwierając najpierw a cmd.exe, przechodząc do katalogu, w którym się znajdujesz, a następnie wywołując, C:\\Cygwin\\silent_run.vbsaby otworzyć C:\\Cygwin\\bin\\mintty.exeterminal z opcjami wiersza poleceń-w max , tj. Otworzyć go zmaksymalizowany.

Skrypt C:\\Cygwin\\silent_run.vbsjest wymagany, aby otworzyć C:\\Cygwin\\bin\\mintty.exeterminal bez utrzymywania pierwszego cmd.exe, otwartego.

Pierwszy wpis C:\\Cygwin\\AddMinttyToContextMenu.regnie jest używany, C:\\Cygwin\\silent_run.vbsponieważ domyślnie HKEY_CLASSES_ROOT\Directory\Background\shellklucze są już otwarte w bieżącym katalogu, a następnie możemy po prostu zadzwonić C:\\Cygwin\\bin\\mintty.exebezpośrednio, aby uruchomić go z pudełka.

Bibliografia:

  1. Jak dodać pozycję menu kontekstowego do Eksploratora Windows dla folderów
  2. VBScript przekazuje argument linii poleceń w ścieżkach ze spacjami
  3. Jak przekazać polecenie ze spacjami i cudzysłowami jako pojedynczy parametr do CScript?
  4. wywoływanie vbscript z innego pliku vbscript z przekazywaniem argumentów
  5. https://ss64.com/vb/syntax-args.html
  6. Sprawdź, czy ciąg zawiera spację
  7. Uruchamianie wiersza poleceń w trybie cichym za pomocą VbScript i uzyskiwanie danych wyjściowych?
  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. Jak uruchomić skrypt Batch otrzymany jako argument na VBscript?
  11. Czy mogę przekazać argument do VBScript (plik vbs uruchomiony za pomocą cscript)?
użytkownik
źródło
-1
@echo off
C:
SET mypath=%~dp0
c:\cygwin\bin\bash -c "cd '%mypath%'; export CHERE_INVOKING=1; exec /bin/bash --login -i"

Skopiuj powyższe polecenia do pliku tekstowego i zapisz go jako .bat w dowolnym „zainteresowanym folderze”. Powinien otworzyć cygwin w „folderze zainteresowań”.

Kalyan
źródło
-1

na podstawie odpowiedzi @LindseyD stworzyłem prosty plik BAT, który otwiera cygwin w bieżącym katalogu, może być przydatny (dla mnie tak jest). Zakładając, że masz katalog bin cygwina w ŚCIEŻCE.

FOR /F %%x IN ('sh -c pwd') DO bash -l -i -c 'cd %%x; exec bash'
Roman Hocke
źródło
-1

Nie wiem, dlaczego musiałem marnować tak dużo czasu, ale to działa dla mnie na wygraną 10, 64-bitową:

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\""
Totty.js
źródło
-1

Prawdopodobnie najprostszy:

1) Utwórz plik foo.reg

2) Wstaw treść:

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) Uruchom foo.reg

Teraz wystarczy kliknąć prawym przyciskiem myszy w dowolnym folderze, kliknąć, open minttya pojawi się mięta w tym folderze.

lama12345
źródło
-2

Najlepiej zrobić jak poniżej:

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"
Shashi Ranjan
źródło