Buka Cygwin di folder tertentu

226

Bagaimana saya bisa membuat pintasan Cygwin yang akan membuka Cygwin di folder tertentu? Ini akan menghindarkan keharusan mengetik

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

setiap kali saya meluncurkan Cygwin.

Randomblue
sumber
2
buat file .bat: di sini adalah tutorial computerhope.com/batch.htm
Umar Jamil
Catatan: Paket chere mungkin perlu dipakai dengan hak administrator. Jika Anda tertangkap oleh ini, dan tergoda untuk menggunakan sudo, Anda mungkin tidak mendapatkan hasil yang diharapkan. Dalam hal ini, masuk sebagai pengguna admin di mesin windows.
dreftymac

Jawaban:

410

Ketika Anda menginstal Cygwin (atau jika Anda sudah menginstalnya, unduh lagi dan mulai setup lagi untuk menjalankan pembaruan), pastikan Anda memilih cherepaket di bawah kategori "Kerang".

Setelah Cygwin diluncurkan, membuka terminal Cygwin (sebagai administrator) dan ketik perintah: chere -i -t mintty -s bash.

Sekarang Anda harus memiliki "Bash Prompt Here" di menu konteks klik kanan Windows.

( mintty adalah terminal default Cygwin. Jika Anda tidak memilihnya dengan -topsi, "Bash Prompt Here" Anda akan menggunakan terminal yang sama dengan Windows Command Prompt, yang mencegah pengubahan ukuran horizontal.)

two7s_clash
sumber
39
Temuan yang luar biasa, terima kasih! Saya menemukan bahwa Anda dapat menentukan terminal yang ingin Anda buka menggunakan -t, misalnya, untuk membuka permen yang Anda gunakanchere -i -t mintty
Kevin Condon
29
Baru diuji dengan 64bit cygwin (1.7.27) dan chere tampaknya sekarang ada pro-tip: jangan lupa untuk meluncurkan terminal cygwin dengan hak istimewa admin.
BuildTheRobots
11
Satu hal lagi yang perlu diperhatikan. Jika Anda sudah melakukan ini dengan chere -i -t mintty -funtuk memaksa menimpa. Anda masih perlu menjalankan cygwin sebagai administrator juga.
Greg Jennings
29
Memiliki masalah izin pada W7x64 (Kesalahan (5): Akses ditolak. Sarang tidak dapat ditulis). Diselesaikan dengan meluncurkan Cygwin sebagai administrator.
DmitrySandalov
17
Cygwin tidak memiliki shell default dalam kasus saya, jadi menambahkan -s bashagar make chere -i -t mintty -s bashini berfungsi untuk saya
Bryce Guinta
97

Inilah yang saya gunakan. Itu tidak memerlukan cherepaket atau mengutak-atik registri. Bekerja pada Windows 7.

Buka folder "Kirim Ke" Anda:

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

Buat pintasan bernama Bash Herememiliki ini di Targetbidang:

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

Di Windows Explorer, Anda klik kanan pada folder & pilih Send To > Bash Here.

Dan inilah trik sebaliknya, membuka Windows Explorer di bash dir Anda saat ini. Buat alias ini:

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

Catatan: cygpath -w .bagian di atas terlampir pada tanda centang belakang.

Sekarang cukup ketik winxdi bash prompt, dan Win Explorer muncul di sana.

Catatan: Jika winx mengarahkan Anda ke folder dokumen Anda, cobalah

alias winx='/cygdrive/c/Windows/explorer.exe /e,`cygpath -w $PWD`'
LindseyD
sumber
3
Trik yang sangat bagus, tetapi winxalias tidak bekerja pada pengaturan Cygwin saya. Saya harus menghapus kedua garis miring terbalik dan menggantinya .dengan $PWDagar berfungsi.
not2qubit
Bagaimana jika pintasan (disesuaikan untuk menggunakan jalur Cygwin64 instal saya) membuka cygwin ke folder pengguna saya? :( Mungkin ini hanya bekerja dengan Cygwin 32-bit?
Alex Hall
Yang ini juga bekerja untuk sayaalias winx='/cygdrive/c/Windows/explorer.exe /e,$(cygpath -wa .)'
Wakan Tanka
1
Dalam cygwin 2.6.0 (pada Win 7 x64) dapat dilakukan jauh lebih mudah: cygstart .untuk membuka Explorer dengan folder saat ini, atau sintaksis folder apa pun cygstart .., cygstart /your/pathdll ...
244an
2
Peringatan: C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico C:\cygwin\bin\bash.exe -l -c "cd \"$0\" ; exec bashmenjaga agar pegangan file tetap terbuka untuk $0direktori, bahkan setelah Anda mengubah direktori kerja ke direktori lain. Yang lebih buruk lagi adalah menelurkan salinan window ( ALT+F2), bahkan ketika Anda sudah mengubah direktori kerja, membuka pegangan file lain $0. Ini dapat mengganggu beberapa operasi yang mungkin ingin dihapus / modifikasi $0dalam proses apa pun. Jika Anda mendapatkan kesalahan 'Izin Ditolak' saat mengakses $0ini mungkin penyebabnya
matt
33

Dari terminal cygwin, jalankan perintah ini:

echo "cd your_path" >> ~/.bashrc

Script .bashrc dijalankan saat Anda membuka sesi bash baru. Kode di atas dengan perubahan ke direktori your_path ketika Anda membuka sesi cygwin baru.

bschwagg
sumber
3
INI ADALAH JAWABANNYA! BEGITU MUDAH.
Devin Walker
Iya ! Itu mudah ! Pilih!
Alex Byrth
19
Ini bukan jawabannya, karena itu tidak membuat jalan pintas yang menggunakan direktori tersebut, seperti yang dipersyaratkan oleh pertanyaan, itu mengubah perilaku semua metode memulai shell Cygwin. Anda seharusnya tidak mengubah pengaturan global (atau profil masuk) untuk menyelesaikan masalah lokal.
Ben Voigt
Saya pernah menggunakan persis metode ini untuk menambahkan pengguna ke file password, sengaja meninggalkan dari salah satu >karakter. Kemudian saya logout :-)
paxdiablo
@paxdiablo ouch
bschwagg
30

Saya membuat file .reg yang menempatkan opsi "Buka Cygwin Di Sini" di menu konteks klik kanan. Itu tergantung pada paket "chere" Cygwin, yang dapat Anda instal menggunakan apt-cyg jika Anda tidak menginstalnya di pengaturan awal.

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
sumber
7
Bagi mereka yang bertanya-tanya bagaimana cara menggunakan ini, cukup salin teks latar belakang abu-abu dan letakkan di file teks yang disebut "foo.reg" dan klik dua kali.
Andrew Moylan
3
Beri +1 solusi terbaik di sini. Dan terima kasih telah menyebutkan apt-cyg, saya tidak tahu tentang alat ini
user11153
Ini persis apa yang saya cari, dan bahkan membantu saya dengan hal-hal lain karena bahkan situs Microsoft tidak mendapatkan hasil yang sama.
FilBot3
Saya harus mengubah ke "cygwin" tetapi saya mendapatkan kesalahan ini: "Gagal menjalankan / bin / xhere: Tidak ada file atau direktori seperti itu"
Totty.js
@ Totty.js Anda yakin sudah menginstal paket 'chere' di Cygwin?
Jeutnarg
17

Untuk cygwin64 atau instalasi tanpa chere Anda dapat menggunakan perintah berikut dalam entri registri (dengan asumsi windows karena jalur Anda, juga dengan asumsi direktori instalasi cygwin adalah c: \ cygwin64)

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

Bekerja pada Windows 7 dan 8 file Registry yang tersedia untuk diunduh di sini: 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
sumber
Bisakah Anda jelaskan mengapa Anda memiliki 3 (x2) entri registri?
not2qubit
1
mereka adalah untuk Direktori, Drive dan konteks Latar Belakang
Tom Kay
Akhirnya, salah satu solusi yang bekerja untuk saya, meskipun saya memiliki beberapa masalah memahaminya sepenuhnya ;-) ['bash' setelah 'exec bash']. Petunjuk: Anda dapat mengganti 3 entri dengan 1: 'Folder' alih-alih 'Direktori', 'Drive' dan 'Latar Belakang'.
t0r0X
hanya dengan 'Folder', tautan muncul di menu konteks drive, tetapi gagal dijalankan. Namun, saya dapat mengurangi menjadi 2 entri dengan 'Folder' dan 'Direktori \ Latar Belakang'
Tom Kay
1
Untuk emacs: "C: \\ cygwin \\ bin \\ mintty.exe -i /Cygwin-Terminal.ico / bin / bash -l -c 'emacs \" cygpath \"%V\"\ ";" "
Jan Matousek
12

Jika Anda ingin memiliki direktori itu sebagai default, cukup tambahkan cdpernyataan ke ~/.profilefile Anda .

Apa yang saya cenderung lakukan adalah menggunakan metode itu untuk mengatur direktori saya yang biasa, ditambah mendefinisikan alias untuk kasus umum saya juga:

alias tom="cd /users/tom"

atau setara Anda. Ini memungkinkan saya mengubah direktori dengan sangat cepat.

paxdiablo
sumber
Apakah alias itu harus ditambahkan ke ~/.profilefile juga, atau jalankan sekali saja?
iono
2
@ homeoftom, jika Anda menjalankannya di dalam shell, itu hanya akan mempengaruhi shell itu. Itu tidak akan memengaruhi orang lain yang Anda mulai. Jadi, jika Anda ingin selalu tersedia, Anda harus memasukkannya ke dalam salah satu file startup Anda (yang ~/.profilemerupakan salah satu kemungkinan).
paxdiablo
itu tidak berfungsi untuk saya ketika dimasukkan ke dalam ~ / .profile, tetapi ~ / .bashrc bekerja
zupa
@ zupa, aturan untuk mana file startup berasal cukup rumit (meskipun semua ada di bashhalaman manual jika Anda menggali cukup dalam). Itu sebabnya saya menyatakan .profilesebagai satu kemungkinan.
paxdiablo
.profile akhirnya sumber .bashrc sehingga Anda mungkin ingin menambahkan perintah itu ke bashrc sebagai gantinya. (. profil tidak bekerja untuk saya)
laertis
8

Saya menggunakan dan Ikon untuk meluncurkan cygwin saya tanpa cherepaket.

  1. Buat pintasan di desktop saya untuk terminal cygwin.
  2. R-klik ikon dan pilih properti.
  3. Pada tab pintasan, gunakan ini untuk TARGET: C:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico -c 'cd'
  4. Untuk MULAI, Letakkan jalur direktori / folder tempat Anda ingin meluncurkan cygwin. yaituC:\some\dir\name\here
Doug
sumber
ok 2 hal 1. menambahkan -cdalam "Target" tidak ada bedanya selama Anda memberikan jalur di "Start In" 2. solusi ini menimbulkan masalah PATH. cygwin gagal untuk melanjutkan /usr/local/bin:/usr/bindalam sistem PATH sehingga tidak dapat memanggil beberapa binari-nya. Konfigurasi mungkin berada di /etc/profile>> `if [$ {CYGWIN_NOWINPATH-addwinpath} =" addwinpath "]; kemudian `
laertis
8

Seperti yang dikatakan two7s_clash, Anda harus menginstal cherepaket dan mengatur mintty terlebih dahulu:

  1. Buka terminal Cygwin sebagai administrator
  2. apt-cyg install chere
  3. chere -i -t mintty

Anda sekarang dapat membuka cygwin di direktori tertentu dengan klik kanan mouse di Windows Explorer (Menu Konteks) dan pilih "Bash Prompt Here".

Anda juga dapat membuka cygwin dari direktori tertentu menggunakan prompt perintah windows:

  1. Buka command prompt windows
  2. Arahkan ( cd) ke direktori khusus
  3. Menjalankan C:\cygwin64\bin\mintty.exe C:\cygwin64\bin\env.exe CHERE_INVOKING=1 C:\cygwin64\bin\bash.exe -l

    Perintah ini akan membuka cygwin dengan direktori saat ini diambil dari command prompt.

Komandan Gratis

Perintah ini juga dapat digunakan untuk membuka cygwin dari pengelola file kustom, seperti FreeCommander.

Untuk membuka cygwin dengan direktori saat ini diambil dari FreeCommander, lakukan hal berikut:

  1. Alat -> Alat Favorit -> Alat favorit edit ... (Ctrl + Shift + Y)
  2. Tambahkan bilah alat baru (+ Ikon), Pintasan: Sisipkan

    • Nama: cygwin
    • Program atau folder: C:\cygwin64\bin\mintty.exe
    • Mulai folder: %ActivDir%
    • Parameter: C:\cygwin64\bin\env.exe CHERE_INVOKING=1 C:\cygwin64\bin\bash.exe -l

Anda dapat menambahkan pintasan khusus untuk membuka cygwin dari FreeCommander:

  1. Alat -> Tentukan pintasan keyboard
  2. Gulir ke bawah ke "Alat favorit 01" (atau "Alat favorit N")
  3. Tetapkan kunci cara pintas baru: Saya menggunakan Ctrl+ Shift+T

Referensi hebat: Wiki MinTTY, artikel Tips: Memulai di direktori tertentu

nexayq
sumber
5

Untuk membuat pintasan Windows yang meluncurkan terminal Cygwin di direktori yang Anda pilih sendiri, coba yang berikut ini:

  • Klik kanan pada desktop Windows, pilih 'Baru', lalu pilih 'Pintasan'.

  • Untuk lokasi item, masukkan teks berikut, ubah minttyjalur sesuai kebutuhan dan ganti nama direktori yang diinginkan di mana ditunjukkan.

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

    Misalnya, OP akan menggunakan teks berikut:

    C:\cygwin64\bin\mintty.exe /bin/sh -lc 'cd /cygdrive/c/Users/Tom/Desktop/; exec bash'
    
  • Klik 'Selanjutnya'.

  • Masukkan nama yang diinginkan untuk pintasan dan klik 'Selesai'.

Beberapa pintasan dapat ditempatkan pada desktop untuk membuka terminal Cygwin di berbagai direktori yang sering diakses.

Terinspirasi oleh solusi yang diposting di Cara membuka shell Cygwin di direktori tertentu dari Netbeans? di superuser.com .

Patrick Kelly
sumber
4

Temukan file Cygwin.bat dan buat konten seperti ini:

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

Tambahkan path ke cygwin.bat ke lingkungan PATH.

Sekarang di folder mana pun Anda dapat mengetik ke bilah alamat:

cygwin

Anda juga dapat mengetiknya saat Anda berada di cmd.exe

Geografi
sumber
3

Saya menggunakan baris kode berikut untuk memulai zsh di direktori saat ini di 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'"

perhatikan bahwa saya menggunakan% V alih-alih% L atau% 1 (karena keduanya tidak bekerja untuk saya)

H. Hess
sumber
3

Ketika instalasi baru diperlukan, saya membuat "variabel lingkungan pengguna" Windows yang dinamai HOMEdan memberikannya jalur di mana pun "My Documents" berada.

Installer cygwin mendeteksi HOMEvariabel, secara otomatis menerjemahkannya ke dalam cygpath dan memilih ini sebagai direktori ~ saya.

Ini telah bekerja dengan baik untuk setiap workstation yang saya gunakan secara profesional selama 5 tahun terakhir (sekitar 3 atau 4, Win7). Saya selalu menjadi satu-satunya pengguna di mesin ini, tidak bisa mengatakan apa efeknya.

Adam.at.Epsilon
sumber
3

Saya telah membuat skrip edit registri untuk membuka Cygwin di folder mana pun yang Anda klik kanan. Ada di GitHub saya.

Ini GitHub saya

RegEditKode contoh dari Github untuk mesin 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\""
umer936
sumber
Jika Anda mendapatkan "Kesalahan saat mengakses registri." kesalahan lihat jawaban oleh @mpersico di bawah ini ... akan menyelamatkan saya 15 menit :)
Daniel Sokolowski
2

Buka terminal Cygwin sebagai Administrator

Dalam PowerShell (menggunakan cokelat):

choco install cyg-get

Di cygwin Akan Instal menu klik kanan

cyg-get install chere
chere -i

Sekarang Anda dapat mengklik kanan dan menggunakan "Bash Prompt Here" di folder apa pun.

Jonathan
sumber
1

Anda dapat menambahkan ikon ke shell dengan menambahkan Iconbidang yang disetel ke path ke Cygwin.icofile Anda .

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
sumber
Saya pikir prasyarat untuk keberadaan xhere adalah pemasangan chere, sebagaimana disebutkan dalam jawaban lain.
Samuel
1

Di mesin Windows saya tidak mengambil:

chere -i -t mintty

Karena shell mintty tidak tersedia, tetapi Anda mungkin memiliki pilihan berbagai shell lain seperti ash bash cmd dash mksh pdksh posh tcsh zsh passwd.

jadi saya menggunakan:

chere -i -s bash

pengguna3065757
sumber
Mintty bukan shell, ini adalah emulator terminal.
Palec
Bagaimana ini menjawab pertanyaan awal?
Leigh
Ini akan memberikan bantuan kepada mereka yang tidak memiliki mintty dalam sistem mereka dan mendapatkan kesalahan ketika mencoba untuk mencoba solusi yang diberikan di atas, saya juga mengikuti solusi yang diberikan di atas tetapi tidak bekerja pada mesin windows saya, tetapi jawaban saya menyelesaikan masalah.
user3065757
1

Anda bisa membuka terminal cygwin dan menulis: cd dan setelah drag n drop folder yang ingin Anda masukkan akhir!

Panagiotis
sumber
Meskipun ini tidak sepenuhnya menyelesaikan pertanyaan yang diajukan, ini adalah tip yang sangat berguna. Terima kasih.
RoG
1

Dalam jawaban yang menggunakan registri, saya menemukan bahwa pada Windows 2008 R2 SP1, Anda harus menghapus Background dari jalur. Lebih lanjut, karena chere dan xhere bukan bagian dari cygwin64, berikut adalah solusi yang berfungsi untuk keduanya, menggabungkan registri dan solusi Kirim Ke. Ganti 'E: \ cygwin64' dengan lokasi instal Anda:

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
sumber
0

Ini adalah satu-satunya solusi registri Cygwin64 yang bekerja untuk saya di 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  '"

Pastikan Anda memodifikasi jalur 'C: \ cygwin64' Anda seperlunya.

Smyrnian
sumber
0

Saya telah membuat file batch dan meletakkannya di direktori / direktori Cygwin. Script ini dikembangkan sehingga memungkinkan untuk menginstal / menghapus entri registri untuk membuka folder dan drive yang dipilih di Cygwin. Untuk detail, lihat tautan http://with-love-from-siberia.blogspot.com/2013/12/cygwin-here.html .

pembaruan: Solusi ini melakukan hal yang sama seperti saran awal tetapi semua manipulasi dengan Windows Registry disembunyikan dalam skrip.

Lakukan perintah untuk menginstal

cyghere.bat /install

Lakukan perintah untuk menghapus instalasi

cyghere.bat /uninstall
jsxt
sumber
0

Saya juga punya masalah dengan git, yang digunakan untuk "mencuri" perintah cygwin saya - jadi saya perlu menjalankan
C:\cygwin\bin\mintty.exe -
tetapi setelah menginstal cheredan mengeksekusi chere -i -t mintty -f sebagai admin (lihat di atas), Anda dapat menggunakan:
C:\cygwin\bin\mintty.exe -e /bin/xhere /bin/bash.exe "."
Saya menambahkan ini di Total Commander sebagai tombol kustom (kanan) klik pada panel> add ...) dan itu bekerja dengan sangat baik.

Jakub Michalko
sumber
0

Buat file bash, katakanlah move.shyang memiliki kode berikut. C:\cygwin64\bin\run.exe -p /bin bash runFile.sh Ini memulai Cygwin dan mengeksekusi runFile.shhadiah di direktori bin Cygwin. Misalkan Anda ingin menavigasi ke direktori tertentu katakanlah E:\code runFile.sh memiliki kode berikutcd E: cd code

LeelaPrasad4648
sumber
0

Akhirnya jawaban yang independen dari Cygwin itu sendiri.

Ini menggunakan fakta bahwa, jika saya berada di direktori C:\\Cooldan saya memanggil perintah C:\\Cygwin\\bin\\mintty.exe, minttysecara otomatis akan terbuka di direktori saat ini, yaitu C:\\Cool,.

Pertama, Anda harus membuat file C:\\Cygwin\\silent_run.vbsdengan konten berikut:

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

Selanjutnya, untuk menginstal jawaban ini, Anda akan menggunakan file Windows Registry. Untuk itu, cukup masukkan konten file berikut ke dalam file bernamaC:\\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"

Sekarang, Perbaiki semua jalur kode keras, yaitu, C:\\Cygwinke lokasi aktual di mana instalasi Cygwin Anda aktif.

Kemudian, cukup buka file C:\\Cygwin\\AddMinttyToContextMenu.reguntuk menginstal entri registri baru Anda dan Anda selesai.

File ini C:\\Cygwin\\AddMinttyToContextMenu.regbekerja dengan membuka a pertama cmd.exe, mengubah ke direktori di mana Anda berada, kemudian, memanggil C:\\Cygwin\\silent_run.vbsuntuk membuka C:\\Cygwin\\bin\\mintty.exeterminal dengan opsi baris perintah-w max , yaitu, untuk membukanya secara maksimal.

Script C:\\Cygwin\\silent_run.vbsdiperlukan untuk membuka C:\\Cygwin\\bin\\mintty.exeterminal tanpa membiarkan cmd.exekita membuka, membuka.

Entri pertama C:\\Cygwin\\AddMinttyToContextMenu.regtidak digunakan C:\\Cygwin\\silent_run.vbskarena secara default HKEY_CLASSES_ROOT\Directory\Background\shelltombol sudah terbuka di direktori saat ini, maka, kita bisa C:\\Cygwin\\bin\\mintty.exelangsung menelepon untuk membuatnya bekerja di luar kotak.

Referensi:

  1. Bagaimana menambahkan item menu konteks ke Windows Explorer untuk folder
  2. VBScript meneruskan argumen baris perintah di jalur dengan spasi
  3. Bagaimana cara menyampaikan perintah dengan spasi dan tanda kutip sebagai parameter tunggal ke CScript?
  4. memanggil vbscript dari argumen vbscript file lain yang lewat
  5. https://ss64.com/vb/syntax-args.html
  6. Periksa apakah string berisi ruang
  7. Menjalankan baris perintah secara diam-diam dengan VbScript dan mendapatkan output?
  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. Bagaimana menjalankan skrip Batch yang diterima sebagai argumen pada VBscript?
  11. Bisakah saya meneruskan argumen ke VBScript (file vbs diluncurkan dengan cscript)?
pengguna
sumber
-1
@echo off
C:
SET mypath=%~dp0
c:\cygwin\bin\bash -c "cd '%mypath%'; export CHERE_INVOKING=1; exec /bin/bash --login -i"

Salin perintah di atas dalam file teks dan simpan sebagai .bat di salah satu "folder yang Anda minati". Ini harus membuka cygwin di "folder yang Anda minati".

Kalyan
sumber
-1

berdasarkan jawaban @LindseyD saya membuat file BAT sederhana, yang membuka cygwin di direktori saat ini, mungkin berguna (bagi saya itu). Dengan asumsi bahwa Anda memiliki direktori bin cygwin di PATH.

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

Saya tidak tahu mengapa saya harus membuang banyak waktu, tetapi ini bekerja untuk saya pada win 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\""
Totty.js
sumber
-1

Mungkin yang paling sederhana:

1) Buat file foo.reg

2) Sisipkan konten:

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

Sekarang cukup klik kanan di folder mana saja, klik open minttydan itu akan menelurkan mintty di folder itu.

lama12345
sumber
-2

Terbaik untuk dilakukan seperti di bawah ini:

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
sumber