Windowsで.shファイルを実行する方法を教えてください。
コマンドラインで./name.shというコマンドでファイル(name.sh)を実行しようとすると、次のようなエラーが出ます:
“. "は内部または外部のコマンド、操作可能なファイル、またはバッチファイルとして認識されません。
コマンドラインで./name.shというコマンドでファイル(name.sh)を実行しようとすると、次のようなエラーが出ます:
“. "は内部または外部のコマンド、操作可能なファイル、またはバッチファイルとして認識されません。
WindowsのCMD.EXEを使っていますね(エラーメッセージから)。コマンドの実行には別の構文を使っています。Cygwinなどがインストールされていると仮定して、sh name.sh
を使用する必要があります。
明確にするために、Windowsには.shファイルをサポートする組み込みのユーティリティがありません。これを実行するには、 Cygwin のようなサードパーティ製のツールをインストールする必要があります。
Windows のコマンドプロンプトで Linux のコマンドを実行しようとしています。Windows ではバックスラッシュはパスセパレータであり、前方のスラッシュは一般的に引数を示します。
したがって、Windows はあなたが “.” という名前のコマンドを実行しようとしていて、引数 “/name.sh” を解析しようとしていると考えます。正しい規約は “.name.sh” です。さらに、Windows は自動的にカレントディレクトリを検索しますので、"name.sh “と入力すればいいのです。
次の問題は、Windows が sh スクリプトが何であるかを知らないということです。もしあなたが本当にshスクリプトを実行したい、または実行する必要があるならば、Cygwinをインストールすることでこれを解決することができます。これでWindowsが理解できるバッチファイルができました。バッチファイルについては こちら を参照してください。
私の考えでは # Best solution in my opinion:
ダウンロードしてインストール .git for Windows
デスクトップを右クリックして *“git bash here” *
unix のようにスクリプトを実行する
完了!
_注意。多くのコマンドはWindows上では動作しません!
定期的にスクリプトが必要な場合は、ショートカットを作成すると良いでしょう(デスクトップなどに):
Create a Shortcut to mintty.exe
on your desktop
ショートカットのプロパティを編集し、ターゲットを変更します(パスはそのままで):
C:\Program Files\Git\usr\bin\mintty.exe" -h always /bin/bash -l -e 'D:\folder\script.sh'
ガソリンの代わりにオレンジジュースで車を走らせようとしています。Windowsは、オペレーティング・システムのこれらの2つのファミリーが共通の祖先であるDEC PDP-xマシンを共有しているように、Unix/Linux/zOS Unix Subsystem/*ixシェルスクリプトと.batまたは.cmdファイルに格納されている類似のコマンドを共有しています。 exe “プログラムや "csh.exe "や "bash.exe "プログラム(tsh.exeは誰か?)を提供する環境をインストールする必要があります
あるいは、もしあなたがUnixのスクリプトコマンドをよく知っていて、Windowsの.cmdや.batファイルのコマンドをよく知っていれば、.shファイルを.batや.cmdファイルに変換することができます。それでも、Windowsでは同等のものがないUnixスタイルのプログラム–grep, sed, vi, emacsなど–に遭遇することがよくあります。そのため、CygWin (ミニマリストではありません)をインストールして、シェルとUnixツールを手に入れることが求められています。これらの特別な日のために、フラッシュドライブに入れておきましょう。
誰かがMS-DOSがコマンドには/
を、パスには誰かがMS-DOSがコマンドには
/`を、パスにはを使うと言っていました。これはわずかに誤解を招く。私の例を見てください:
C:\myfoo\foo\>cd../..
C:\myfoo\foo\>cd..\..
効果に違いはありません。はい、それはすべての操作のために真ではありません - 実際の答えは、単にNoであるか、またはCygwinまたはSSHDなしではできません。
私は、UnixUtil という別の簡単な解決策を見つけました。
ダウンロードして、C:ドライブに解凍します。環境変数path
をC:\UnixUtils\usr\local\wbin
を含むように設定します。パスを C:\UnixUtils\bin
に設定しないでください。
完全性のために、私はWindows 10のための新しい “Windows Subsystem for Linux "機能に言及したいと思います。詳細は http://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10/
注意点としては、"Developer Mode” スイッチを有効にして、"Windows Subsystem for Linux (Beta)“ オプションを有効にする必要があります。
あなたの家(または仕事場)にLinuxボックスがあり、同じネットワークに接続されており、このネットワークが安全である場合、これはトリックを行うかもしれません:
mount //WinMachine/Share LinuxFolder
を使ってマウントする(私の記憶では、Sambaが必要)。PuTTY ](http://www.chiark.greenend.org.uk/~sgtatham/putty/) のようなものを使って、その Linux ボックスにリモートでログインします。マウントされたフォルダでコマンドを実行します。OK, これではたくさんの問題があります - #!/bin/sh を削除して、拡張子を bat に変更すれば、もう少し修正すれば動くようになるかもしれません。cygwin や unxutils を使いこなせば両方で動作するものが作れるかもしれませんが、環境が常に同じであることを絶対的に確信していない限り、頭痛の種になるほどの価値はありません。
ここでの既存の答えは当時は正しかったのですが、Windows 10 does は現在、オプションで 完全な bash シェルを実行している Ubuntu の修正版 を含んでいます。
一度実行可能にすると、スクリプトはbash内から通常の方法で実行することができます, 例えば:
chmod +x myscript.sh
./myscript.sh
Windowsから直接スクリプトを実行したい場合は、同じディレクトリにショートカットを作成し、'ターゲット'を次のようなものに設定することができます:
C:\Windows\System32\bash.exe -c "./myscript.sh"
スクリプトのパスがショートカットの場所に相対している場合は(上記の例のように)、'スタートイン'フィールドも空白であることを確認してください。
ウィンドウズからシェルスクリプトを実行するには、まずコマンド : dos2unix を使ってください。dos2unixのコマンドを使用して、通常のコマンドを使用することができます。
問題は実際には name.sh
ファイルの中にある可能性があります – あなたは .
コマンドを使おうとしていますが、それは有効なコマンドではないシェルのようなものを実行しようとしています (例: csh
だと思います)。
では: (実際に name.sh
を実行しようとしているのであれば) #!/bin/sh
は正しい sh
で始まるのでしょうか?