web-dev-qa-db-ja.com

Windowsのコマンドプロンプトで.shを実行する方法?

Windows 7のコマンドプロンプトで.shを実行するにはどうすればよいですか?この行を実行しようとすると、常にこのエラーが発生します。

app/build/build.sh

エラー、

'app' is not recognized...

または、

bash app/build/build.sh

エラー、

'bash' is not recognized...

私が見逃したことは何かアイデアがありますか?

ここでスクリーンはつかみます、 enter image description here

92
laukok

エラーメッセージは、bashがインストールされていないか、PATHにインストールされていないことを示しています。

グーグルのトップヒットは http://win-bash.sourceforge.net/ ですが、ほとんどのBashスクリプトはUnixライクな環境を想定していることを理解する必要があります。そのため、Bashをインストールしただけでは、ネット上で見つけたスクリプトを実行することはできないでしょう。ただし、それがこの特定の使用シナリオ用に特別に設計されていない限り。それに対する通常の解決策は https://www.cygwin.com/ です。しかし、達成したいことによっては、さまざまな方法があります。

Windowsが使用シナリオの中心ではない場合は、無料のOS(おそらく仮想化)をインストールするのが最も簡単な方法かもしれません。

2番目のエラーメッセージは、Windowsが名目上スラッシュをディレクトリ区切り文字として受け入れるという事実によるものですが、この文脈では、それはスイッチ区切り文字として解釈されています。言い換えれば、Windowsはあなたのコマンドラインをapp /build /build.shとして(あるいは、Unixオプションの慣例で言い換えればapp --build --build.shとして)構文解析します。あなたはapp\build\build.shを試すことができますが、上で概説した状況のために、うまくいくことはないでしょう。

44
tripleee

_ git _ をインストールしてください。 GITのインストール中に、そのオプションを選択してGIT Bashをwindowsのコンテキストメニューに追加します。インストール後、フォルダを右クリックしてGIT Bash Hereを選択し(添付の写真を参照)、例えば以下のようにshコマンドを使用します。

sh test.sh

enter image description here

95
Faisal Mq

.sh ファイルを実行する最も一般的な方法は、 sh コマンドを使用することです。

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

他の良いオプションは CygWin をインストールすることです

Windowsではhomeは次の場所にあります。

C:\cygwin64\home\[user]

例えば、私は bash コマンドを使用して私のmy-script-test.shファイルを実行します。

jorgesys@INT024P ~$ bash /home/[user]/my-script-test.sh 
44
Elenasys

cmderも使えます

Cmderは、Windows上でNiceコンソールエミュレータが存在しないことに対する純粋な欲求不満から生まれたソフトウェアパッケージです。それは素晴らしいソフトウェアに基づいていて、モノカイカラースキームとカスタムプロンプトレイアウトで盛り上がって、最初からセクシーに見えます

Screenshot

cmder.net

6
vipmaa

Windows 10 Anniversary Updateでは、Windows上のubuntu上で/を使ってシェルコマンドを実行するのがさらに簡単です。

私は私のx-wrt ​​r7000 netgearルーターのために私の地域を設定しようとしていました、私は次のものが私のために働いたことを発見しました。

ssh [email protected] < /mnt/c/ccode-eu.sh
4
SignedAdam

個人的にはこのバッチファイルを使いましたが、CygWinがインストールされている必要があります(図のように64ビット)。ファイルタイプ.SHをこのバッチファイル(私の場合はExecSH.BAT)に関連付けるだけで、.SHをダブルクリックして実行できます。

@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% %*'

に基づいて これ 元の仕事。

3
Anonymouse

Windows 10の新機能 - Windowsでubuntuでbashを実行 - Windows 10で利用可能 "Insiders"は会議のビルド後にビルドされます。

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

3
claudiu.nicola