コマンドラインで./name.shコマンドによってファイル(name.sh)を実行しようとすると、次のようなエラーが表示されます。
""内部コマンドまたは外部コマンド、操作可能ファイル、またはバッチファイルとして認識されない
.shファイルを実行するのを手伝ってください
あなたは、Windows CMD.EXEにいます(エラーメッセージから)。コマンドを実行するために異なる構文を使用します。 Cygwinなどをインストールしていると仮定して、sh name.sh
を使用する必要があります。
明確にするために、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はUnix/Linux/zOS Unix Subsystem/* ixシェルスクリプトと.batまたは.cmdファイルに保存された同様のコマンドを共有します。これら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をインストールする呼び出し(ミニマリストではありません)ツールこれらの特別な機会のために、フラッシュドライブにそれを入れてください。
MS-DOSについて、コマンドに/
を、パスに\
を使用している人がいます。これは少し誤解を招きやすいです。私の例を見てください。
C:\myfoo\foo\>cd../..
C:\myfoo\foo\>cd..\..
効果に違いはありません。はい、すべての操作に当てはまるわけではありません。実際の答えは、単純にいいえ、またはCygwinまたはSSHDなしでは不可能です。
私はif then fi
とeval
、exec
が呼び出されたときに-Djava.something
で何をするのかを理解しようとして愚かに半日を過ごしたので知っているだけです。
ダウンロードしてインストールします Windows用git
デスクトップを右クリックして "git bash here"と言ってください
Unixのようにあなたのスクリプトを実行する
完了しました。
注意:多くのコマンドはウィンドウ上では動作しません!それでも、基本的なことの多くはうまくいくでしょう。
このスクリプトが定期的に必要な場合は、ショートカットをデスクトップに作成することができます(例:
デスクトップにmintty.exe
へのショートカットを作成します
ショートカットのプロパティを編集してターゲットを変更します(パスをそのままにします)。
C:\Program Files\Git\usr\bin\mintty.exe" -h always /bin/bash -l -e 'D:\folder\script.sh'
Windows用のGithubを使用してください。それはすべてのUnix環境の実行ファイルを含みます。
これは古いスレッドですが、Windows 10を実行している人のためのものです。コントロールパネルの「Windowsの機能の有効化または無効化」からWindowsの機能を開くだけです。
「Linux用Windowsサブシステム」機能を選択してください。インストール後、あなたは 'Bash'を手に入れ、bash内でネイティブLinuxサーバを設定することさえできます。そしてもちろん、bash内のshコマンドも機能します。
完全を期すために、Windows 10用の新しい「Windows Subsystem for Linux」機能について言及したいと思います。詳細は http://www.howtogeek.com/249966/how-to-install-and -linux-bash-windows-10-shell /
「開発者モード」スイッチを有効にし、「Linux用Windowsサブシステム(ベータ)」オプションを有効にする必要があることに注意してください。
私にとっては、Git for Windowsインストール(とにかく使用している)で十分であることがわかりました。
私は UnixUtil という、別の簡単な解決策を見つけました。
C:ドライブにダウンロードして解凍します。環境変数path
をC:\UnixUtils\usr\local\wbin
を含むように設定します。
これは重要。パスをC:\UnixUtils\bin
に設定しないでください
ウィンドウからシェルスクリプトを実行します。最初にコマンドdos2unixを使用してください、それからあなたはあなたの通常のコマンドを使用することができます。sh runide.sh
これはうまくいくでしょう。
大丈夫、それには多くの問題があります - #!/ bin/shを削除し、拡張子をbatに変更すれば、さらにいくつかの修正でうまくいくかもしれません。それからあなたはそのファイル名でそれを呼び出すことができます。
UNIXのシェルスクリプトの構文とWindowsのバッチファイルはあまり似ていません。 cygwin、あるいはunxutilsをいじってしまうことで両方でうまくいく可能性がありますが、絶対に環境が常に同じであると確信できない限り、それは頭痛の種ではありません。
問題が実際にはファイルname.sh
内にある可能性があります - あなたは.
コマンドを使用しようとしていますが、それは有効なコマンドではない一種のシェル(例えばcsh
など)を実行しようとしています。
それで、name.sh
は正しい#!/bin/sh
で始まりますか(実際にsh
を実行しようとしている場合)?
ここでの既存の答えはその時点では正しかったが、Windows 10 does は現在オプションで フルbashシェルを実行しているUbuntuの修正版 を含む。
実行可能になると、スクリプトはbash内から通常の方法で実行できます。
chmod +x myscript.sh
./myscript.sh
Windowsから直接スクリプトを実行したい場合は、同じディレクトリにショートカットを作成し、 'Target'を次のように設定します。
C:\Windows\System32\bash.exe -c "./myscript.sh"
スクリプトのパスがショートカットの場所を基準にしている場合(上の例のように)、[開始位置]フィールドも空白になっていることを確認してください。