回答:
(エラーメッセージから)Windows CMD.EXEを使用しています。異なる構文を使用してコマンドを実行します。sh name.sh
Cygwinまたは同様のものがインストールされていると仮定して、を使用する必要があります。
明確にするために、Windowsには.shファイルをサポートする組み込みユーティリティがありません。これを実行するには、Cygwinなどのサードパーティツールをインストールする必要があります。
WindowsコマンドプロンプトでLinuxコマンドを実行しようとしています。
Linuxでは、スラッシュはパス区切り文字です。Windowsでは、バックスラッシュはパス区切り記号であり、スラッシュは一般に引数を示します。
したがって、Windowsは、「。」というコマンドを実行しようとしているとみなします。引数「/name.sh」を解析します。正しい規則は「。\ name.sh」です。さらに、Windowsは現在のディレクトリでコマンドを自動的に検索するため、「name.sh」と入力するだけです。
あなたが直面する次の問題は、Windowsがshスクリプトが何であるかを知らないということです。これもまたLinuxのことです。shスクリプトを本当に実行したい、または実行する必要がある場合は、Cygwinをインストールすることでこれを解決できます。
ただし、以前のコメントの1つから判断すると、スクリプトの名前をname.batに変更し、「#!/ bin / sh」行を削除することもできます。これで、Windowsが理解できるバッチファイルが作成されました。バッチファイルの詳細については、こちらをご覧ください。
別の方法として、ダークサイドに戻ってLinuxをインストールすることもできます。プロンプトから:
sh runide.sh
または
sudo sh runide.sh
プログラムが実行され、システムも改善されます。
Windows用の.gitをダウンロードしてインストールする
デスクトップを右クリックして「git bash here」と発声します
UNIXのようにスクリプトを実行します
できた!
注意:多くのコマンドはWindowsでは機能しません!それでも、基本的な機能の多くは機能します。
そのスクリプトが定期的に必要な場合は、ショートカットを作成することをお勧めします(デスクトップ上など)。
mintty.exe
デスクトップへのショートカットを作成します
ショートカットのプロパティを編集し、ターゲットを変更します(パスを保持します):
C:\Program Files\Git\usr\bin\mintty.exe" -h always /bin/bash -l -e 'D:\folder\script.sh'
ガソリンではなくオレンジジュースで車を走らせようとしています。Windowsは、.batまたは.cmdファイルに保存されている同様のコマンドをUnix / Linux / zOS Unix Subsystem / * ixシェルスクリプトと共有します。これら2つのオペレーティングシステムファミリは、DEC PDP-xマシンの共通の祖先を共有するためです。
すぐに満足したい場合は、「sh.exe」プログラムまたは「csh.exe」または「bash.exe」プログラムを提供する環境をインストールする必要があります(tsh.exe誰でも?)
あるいは、Unixスクリプトコマンドを非常によく知っていて、Windowsの.cmdおよび.batファイルコマンドを非常によく知っている場合、.shファイルを.batまたは.cmdファイルに変換できます。それでも、Windowsで同等の機能を持たないUnixスタイルのプログラム(grep、sed、vi、emacsなど)に遭遇することがよくあります。したがって、CygWin(ミニマリストではない)をインストールするための呼び出しは、シェルとUnixツール。これらの特別な機会のために、フラッシュドライブに入れてください。
誰か/
がコマンドと\
パスにMS-DOSを使用していると言った。これは少し誤解を招きます。私の例を見てください:
C:\myfoo\foo\>cd../..
C:\myfoo\foo\>cd..\..
効果に違いはありません。はい、すべての操作に当てはまるわけではありません。実際の答えは単にNoであるか、CygwinまたはSSHDがなければ不可能です。
私が知っているのは、私が愚かにも半日を費やして、呼び出されたときに何if then fi
をしeval
、何をするのかを理解しようとしたからです。exec
-Djava.something
Github for Windowsを使用します。すべてのUnix環境の実行可能ファイルが含まれています。
UnixUtilと呼ばれる別の簡単な解決策を見つけました。
C:ドライブにダウンロードして解凍します。環境変数path
にincludeを設定しますC:\UnixUtils\usr\local\wbin
。
これは重要。パスを設定しないでくださいC:\UnixUtils\bin
完全を期すために、Windows 10の新しい「Linux用Windowsサブシステム」機能について言及したいと思います。詳細については、http://www.howtogeek.com/249966/how-to-install-and-use-the-linux-をご覧ください。 bash-shell-on-windows-10 /
「開発者モード」スイッチを有効にし、「Windowsサブシステムfor Linux(ベータ版)」オプションを有効にする必要があることに注意してください。
私にとっては、Git for Windowsのインストール(とにかく使用している)で十分であることがわかりました。
問題は実際にファイル内にある可能性がありますname.sh
- .
コマンドを使用しようとしていますがcsh
、有効なコマンドではない種類のシェル(たとえば、と思う)を実行しようとしています。
だから:(実際に実行しようとしている場合)name.sh
正しいから始まりますか?#!/bin/sh
sh
OK、それは間違っています-#!/ bin / shをドロップし、拡張子をbatに変更すると、さらにいくつかの修正で機能する可能性があります。次に、ファイル名で呼び出すこともできます。
UNIXシェルスクリプトの構文とWindowsバッチファイルはあまり似ていません。cygwin、またはunxutilsをいじり回すと、両方で機能するものが作成される可能性がありますが、環境が常に同じであることを絶対に確信していない限り、頭痛の種にはなりません
drop the #!/bin/sh, and change the extention to bat, and it might work with a few more fixes.
何?!あなたはこれを試したことがないと思います... Windowsでは、最も単純なbash機能でさえサポートされていないか、長い構文が必要です。
ここでの既存の回答はその時点では正しかったものの、Windows 10にはオプションでフルbashシェルを実行するUbuntuの修正バージョンが含まれています。
実行可能になったら、bash内から通常の方法でスクリプトを実行できます。例:
chmod +x myscript.sh
./myscript.sh
Windowsから直接スクリプトを実行する場合は、同じディレクトリにショートカットを作成し、「ターゲット」を次のように設定できます。
C:\Windows\System32\bash.exe -c "./myscript.sh"
スクリプトのパスがショートカットの場所に関連している場合(上記の例のように)、[開始]フィールドも空白であることを確認します。