Bagaimana menjalankan .sh pada Windows Command Prompt?

132

Bagaimana saya bisa menjalankan .sh pada Windows 7 Command Prompt? Saya selalu mendapatkan kesalahan ini ketika saya mencoba menjalankan baris ini di dalamnya,

app/build/build.sh

kesalahan,

'app' is not recognized...

atau,

bash app/build/build.sh

kesalahan,

'bash' is not recognized...

Ada ide apa yang saya lewatkan?

Di sini layar ambil, masukkan deskripsi gambar di sini

laukok
sumber
6
Anda membutuhkan cygwin (mungkin). Anda mencoba menjalankan skrip SHELL (.sh) di Windows dan itulah satu-satunya cara saya menjalankan .shfile saya di Windows.
ha9u63ar

Jawaban:

54

Pesan kesalahan menunjukkan bahwa Anda belum menginstal bash, atau tidak ada di Anda PATH.

Google hit teratas adalah http://win-bash.sourceforge.net/ tetapi Anda juga perlu memahami bahwa sebagian besar skrip Bash mengharapkan lingkungan seperti Unix; jadi hanya menginstal Bash mungkin tidak memungkinkan Anda untuk menjalankan skrip yang Anda temukan di internet, kecuali itu dirancang khusus untuk skenario penggunaan khusus ini. Solusi yang biasa untuk itu adalah https://www.cygwin.com/ tetapi ada banyak alternatif yang mungkin, tergantung pada apa sebenarnya yang ingin Anda capai.

Jika Windows bukan pusat skenario penggunaan Anda, menginstal OS gratis (mungkin divirtualisasi) mungkin cara termudah untuk maju.

Pesan kesalahan kedua adalah karena fakta bahwa Windows secara nominal menerima garis miring sebagai pemisah direktori, tetapi dalam konteks ini, ia ditafsirkan sebagai pemisah saklar. Dengan kata lain, Windows mem-parsing baris perintah Anda sebagai app /build /build.sh(atau, untuk memparafrasekan dengan konvensi opsi Unix, app --build --build.sh). Anda dapat mencoba app\build\build.shtetapi itu tidak berhasil, karena keadaan yang diuraikan di atas.

tripleee
sumber
1
Tentu saja, dengan Windows 10, Anda dapat mengaktifkan WSL dan hampir memiliki komputer asli di dalam Windows Anda.
tripleee
147

Instal GIT . Selama instalasi GIT, tambahkan GIT Bash ke menu konteks windows dengan memilih opsinya. Setelah instalasi klik kanan di folder Anda pilih GIT Bash Here(lihat gambar terlampir) dan gunakan perintah sh Anda seperti misalnya:

sh test.sh

masukkan deskripsi gambar di sini

Faisal Mq
sumber
1
Itu tidak bekerja untuk saya. Jendela command prompt terbuka kemudian dengan cepat ditutup.
desbest
27
Jika Anda telah menginstal GIT, Anda dapat menambahkan path ke variabel sistem PATH sh.exe. Dalam kasus saya itu: c:\Program Files\Git\bin. Kemudian jalankan sh .\script.shdari PowerShell
elshev
1
Bagi saya ini seperti pesona di Windows 10 pada tahun 2020! Meskipun perintah salin / tempel tidak berfungsi untuk saya karena diset tetap pada ctrl-insdanshift-ins
Nam G VU
51

Cara paling umum untuk menjalankan file .sh adalah menggunakan perintah sh :

C:\>sh my-script-test.sh 

Opsi bagus lainnya adalah menginstal CygWin

di Windowsdalam homeberada di:

C:\cygwin64\home\[user]

misalnya saya menjalankan my-script-test.shfile saya menggunakan perintah bash sebagai:

jorgesys@INT024P ~$ bash /home/[user]/my-script-test.sh 
Jorgesys
sumber
43
Kecuali Anda telah mengambil langkah-langkah khusus untuk mendapatkannya, Anda tidak akan memiliki shperintah di Windows.
user2357112 mendukung Monica
1
Ok -1, Apakah maksud Anda saya harus menambahkan tutorial untuk memiliki akses ke sh dari baris perintah ???
Jorgesys
41
Jawaban Anda disajikan seolah-olah Anda berharap dapat mengetik shpada prompt perintah Windows yang sewenang-wenang dan membuatnya berfungsi.
user2357112 mendukung Monica
msys2 adalah tempat yang bagus untuk mendapatkan perintah sh. Lihat github.com/userzimmermann/MSYS2-cmd jika Anda ingin menggunakannya dengan cmd
Aralox
3
Bash, dan shperintahnya, diinstal dengan Git4Windows jika Anda memilih opsi instal 'Install Bash'.
Joel Ellis
13

Anda juga bisa menggunakan cmder

Cmder adalah paket perangkat lunak yang dibuat karena frustrasi murni karena tidak adanya emulator konsol yang bagus di Windows. Ini didasarkan pada perangkat lunak luar biasa, dan dibumbui dengan skema warna Monokai dan tata letak prompt kustom, tampak seksi dari awal

Tangkapan layar

cmder.net

vipmaa
sumber
1
Meskipun tampaknya datang dengan paket tambahan opsional yang mencakup perintah shell Unix umum, paket dasar tampaknya hanya pengganti cmd.
tripleee
5

Pada Pembaruan Ulang Tahun Windows 10, bahkan lebih mudah untuk menjalankan perintah shell di / dengan bash di ubuntu di windows

Saya mencoba untuk mengatur wilayah saya untuk router netgear x-wrt r7000 saya, saya menemukan yang berikut ini bekerja untuk saya, menggunakan bash di ubuntu di windows, Anda harus mengaktifkan subsistem yang ditemukan di fitur windows, dan mode dev on

ssh admin@192.168.1.1 < /mnt/c/ccode-eu.sh
SignedAdam
sumber
Dapat berlari. Tetapi ini adalah lingkungan yang sangat berbeda.
TamusJRoyce
4

Fitur baru di Windows - jalankan bash di ubuntu di windows - tersedia di Windows 10 "Insiders" dibangun setelah konferensi Build:

https://blogs.windows.com/buildingapps/2016/03/30/run-bash-on-ubuntu-on-windows/

claudiu.nicola
sumber
Keren, tapi bagaimana Anda menjalankan shfile bash? Jika saya mencoba melakukannya, jendela hanya berkedip dan menghilang. Jika saya seret & jatuhkan file ke jendela bash yang terbuka, dikatakan bahwa path tersebut tidak ditemukan (karena menggunakan konvensi yang berbeda).
m93a
Apakah mungkin saat ini menjalankan file .sh di Windows? Saya tidak bisa mencobanya sekarang tetapi saya tertarik.
JesusMurF
1
Saya belum mencobanya sendiri, tetapi ada panduan oleh Microsoft tentang cara menjalankan sh di windows: docs.microsoft.com/en-us/windows/wsl/install-win10
claudiu.nicola
@ m93a Di jendela terminal Ubuntu, bash path/to/scriptjalankan skrip. Tentu ada juga shdi Ubuntu. Jika skrip memiliki shebang dan izin yang tepat, cukup path/to/scriptjalankan dengan rnterpreter yang ditentukan dalam shebang.
tripleee
4

Secara pribadi saya menggunakan file batch ini, tetapi memang membutuhkan CygWin diinstal (64-bit seperti yang ditunjukkan). Asosiasikan saja tipe file .SH dengan batchfile ini (ExecSH.BAT dalam kasus saya) dan Anda dapat mengklik dua kali pada .SH dan itu berjalan.

@echo off
setlocal

if not exist "%~dpn1.sh" echo Script "%~dpn1.sh" not found & goto :eof

set _CYGBIN=C:\cygwin64\bin
if not exist "%_CYGBIN%" echo Couldn't find Cygwin at "%_CYGBIN%" & goto :eof

:: Resolve ___.sh to /cygdrive based *nix path and store in %_CYGSCRIPT%
for /f "delims=" %%A in ('%_CYGBIN%\cygpath.exe "%~dpn1.sh"') do set _CYGSCRIPT=%%A
for /f "delims=" %%A in ('%_CYGBIN%\cygpath.exe "%CD%"') do set _CYGPATH=%%A

:: Throw away temporary env vars and invoke script, passing any args that were passed to us
endlocal & %_CYGBIN%\mintty.exe -e /bin/bash -l -c 'cd %_CYGPATH%;  %_CYGSCRIPT% %*'

Berdasarkan karya asli ini .

Rumah Anonim
sumber
0

Saya menggunakan Windows 10 Bash shell alias Linux Subsystem alias Ubuntu di Windows 10 seperti yang dipandu di sini

Nam G VU
sumber