Cygwin: Jalankan skrip dengan mintty / bash

2

Awalnya bertanya pada SO.com, tetapi saya menutupnya. Saya pikir itu lebih cocok untuk SU.com. Tolong beritahu saya jika itu juga bukan tempat yang tepat.

Saya ingin menambahkan menu konteks ke file .sh untuk menjalankannya di cygwin.

Saya mencoba memanipulasi perintah "Open Cygwin here" default:

C:\cygwin\bin\mintty.exe -e /bin/xhere /bin/bash.exe "%L"

Sayangnya, semua saya dapatkan adalah jendela yang menutup lagi segera.
Juga, saya tidak yakin 100%, apa tujuan dan makna argumen xhere.

Ini bekerja:

C:\cygwin\bin\bash.exe %1

Tetapi saya ingin memiliki permen sebagai jendela terminal.

Pertanyaan terakhir:
Apakah ada cara untuk menambahkan string perintah untuk dieksekusi ke string "Buka Cygwin di sini"?

Nippey
sumber

Jawaban:

2

Terima kasih kepada @vaz_az karena membuat saya tetap termotivasi.

Masalah dengan cygwin adalah, itu membutuhkan jalur gaya POSIX.

Ini berarti Anda harus menerjemahkan parameter file %1 yang disediakan oleh windows. Ini dapat dilakukan dengan menggunakan cygpath alat. Kode berikut menunjukkan 1-liner yang dapat digunakan sebagai perintah di regedit:

C:\cygwin\bin\mintty.exe -e /bin/bash -l -c '$(/bin/cygpath "%1")'

Pada baris berikut, ada beberapa contoh, apa yang bisa dilakukan dengan 1-liner:

#Simple
C:\cygwin\bin\mintty.exe -e bash -l -c '$(cygpath "%1")'

#Fire and Forget (With 1 second delay at the end to read any messages)
C:\cygwin\bin\mintty.exe -e bash -l -c '$(cygpath "%1"); echo DONE; sleep 1'

#With logging to static file
C:\cygwin\bin\mintty.exe -l C:\cygwin\home\Nippey\cygwin.log -e /bin/bash -l -c '$(cygpath "%1")'

#With interactive shell after execution (Unfortunately the -i parameter of bash does not work together with -c, so you have to start a sub-shell)
C:\cygwin\bin\mintty.exe -e /bin/bash -l -c '$(cygpath "%1"); bash'
Nippey
sumber
2
$(cygpath "%1") tidak akan bekerja dengan jalur yang berisi spasi. Menggunakan $(cygpath -ms "%1") sebagai gantinya.
user11153
1
Temuan yang bagus. Saya tidak akan menariknya ke jawaban saya, karena tergantung pada bagaimana HDD Anda telah diformat, format 8.3 lama mungkin tidak didukung. Anyway: Bagi saya itu berfungsi bahkan tanpa -ms beralih! Ini adalah konsol saya kemudian: Starting /bin/bash.exe >> xxx@xxx /cygdrive/c/Program Files Saya pikir ini adalah pertanyaan untuk menetapkan kutipan yang tepat.
Nippey
0

Anda harus mencoba dengan perintah berikut: C:\cygwin\bin\mintty.exe -e /bin/bash -l -c '%1'.

Arnaud
sumber
Terima kasih atas tanggapan Anda. Sebenarnya itu tidak menyelesaikan masalah saya, karena Cygwin mengharapkan jalur Linux "/" dan bukan jalur $ M \ " Tetapi Anda mendorong motivasi saya untuk berusaha lebih keras! Saya akan menambahkan jawaban terpisah.
Nippey
Untuk lebih tepatnya, menggunakan jawaban Anda mengarah ke /bin/bash: C:cygwinhomeNippeytest.sh: command not found
Nippey