回答:
エラーメッセージは、インストールされていないbash
か、インストールされていないことを示していますPATH
。
Googleのトップヒットは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
、上で概説した状況のため、うまくいくとは思えません。
GITをインストールします。GITのインストール中に、オプションを選択してGIT BashをWindowsコンテキストメニューに追加します。インストール後、フォルダーを右クリックして選択しGIT Bash Here
(添付の画像を参照)、次のようにshコマンドを使用します。
sh test.sh
sh.exe
。私の場合はそれがでした:c:\Program Files\Git\bin
。その後sh .\script.sh
、PowerShellから実行します
ctrl-ins
とshift-ins
.shファイルを実行する最も一般的な方法は、shコマンドを使用することです。
C:\>sh my-script-test.sh
内に配置されています。Windows
home
C:\cygwin64\home\[user]
たとえばmy-script-test.sh
、次のようにbashコマンドを使用してファイルを実行します。
jorgesys@INT024P ~$ bash /home/[user]/my-script-test.sh
sh
、Windowsでコマンドを実行することはできません。
sh
任意のWindowsコマンドプロンプトで入力して機能させることができるかのように提示されます。
sh
「Bashのインストール」インストールオプションを選択した場合、BashおよびコマンドはGit4Windowsとともにインストールされます。
cmderも使用できます
Cmderは、Windowsに優れたコンソールエミュレーターがないことに対する純粋な不満から作成されたソフトウェアパッケージです。素晴らしいソフトウェアに基づいており、モノカイの配色とカスタムプロンプトレイアウトが加味され、最初からセクシーに見えます
cmd
。
Windows 10 Anniversary Updateでは、Windowsのubuntuでbashを使用してシェルコマンドを実行するのがさらに簡単になりました
私はx-wrt r7000 netgearルーターに自分の地域を設定しようとしていましたが、Windowsのubuntuでbashを使用して次のことが機能することがわかりました。
ssh admin@192.168.1.1 < /mnt/c/ccode-eu.sh
Windowsの新機能-WindowsでUbuntuでbashを実行-ビルド会議後にWindows 10の「インサイダー」ビルドで利用可能:
https://blogs.windows.com/buildingapps/2016/03/30/run-bash-on-ubuntu-on-windows/
sh
ファイルを実行しますbash
か?実行しようとすると、ウィンドウが点滅して消えます。開いているbashウィンドウにファイルをドラッグアンドドロップすると、パスが見つからなかったと表示されます(別の規則を使用しているため)。
bash path/to/script
、スクリプトを実行します。sh
Ubuntuにも確かにあります。スクリプトに適切なシバンと権限がある場合はpath/to/script
、シバンで指定されたrnterpreterを使用してスクリプトを実行します。
個人的にはこのバッチファイルを使用しましたが、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% %*'
このオリジナル作品に基づいています。
.sh
ますが、これがWindowsでファイルを実行する唯一の方法です。