web-dev-qa-db-ja.com

Windowsで.shファイルを実行するには?

コマンドラインで./name.shコマンドによってファイル(name.sh)を実行しようとすると、次のようなエラーが表示されます。

""内部コマンドまたは外部コマンド、操作可能ファイル、またはバッチファイルとして認識されない

.shファイルを実行するのを手伝ってください

62
sushant

あなたは、Windows CMD.EXEにいます(エラーメッセージから)。コマンドを実行するために異なる構文を使用します。 Cygwinなどをインストールしていると仮定して、sh name.shを使用する必要があります。

明確にするために、Windowsは.shファイルをサポートするための組み込みユーティリティを持っていません。そのためには、 Cygwin のようなサードパーティ製ツールをインストールする必要があります。

71
Roger Lipscombe

WindowsコマンドプロンプトでLinuxコマンドを実行しようとしています。

Linuxでは、スラッシュはパス区切り文字です。 Windowsでは、バックスラッシュはパスの区切り文字で、スラッシュは通常引数を示します。

したがって、Windowsは "。"というコマンドを実行しようとしていると考えています。そしてそれを引数 "/name.sh"で解析します。正しい規則は "。\ name.sh"です。さらにWindowsは自動的にカレントディレクトリを検索してあなたのコマンドを探すので、あなたは単に "name.sh"とタイプすることができます。

あなたが直面する次の問題は、Windowsがshスクリプトが何であるかを知らないということです、これもまたLinuxのものです。あなたが本当にshスクリプトを実行したい、または実行する必要がある場合は、Cygwinをインストールすることでこれを解決できます。

しかし、あなたの以前のコメントの1つから判断すると、スクリプトの名前をname.batに変更して "#!/ bin/sh"行を削除することもできます。これで、Windowsが理解できるはずのバッチファイルができました。あなたはここでバッチファイルについてもっと読むことができます。

13
Martin Fido

代わりに、あなたは暗い面を向いてLinuxをインストールすることもできます。プロンプトから:

sh runide.sh

または

Sudo sh runide.sh

あなたのプログラムは実行され、あなたは同様により良いシステムを持つでしょう。

10
steve

あなたはガソリンの代わりにオレンジジュースであなたの車を走らせようとしています。 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をインストールする呼び出し(ミニマリストではありません)ツールこれらの特別な機会のために、フラッシュドライブにそれを入れてください。

5
J.M.

MS-DOSについて、コマンドに/を、パスに\を使用している人がいます。これは少し誤解を招きやすいです。私の例を見てください。

C:\myfoo\foo\>cd../.. 
C:\myfoo\foo\>cd..\..

効果に違いはありません。はい、すべての操作に当てはまるわけではありません。実際の答えは、単純にいいえ、またはCygwinまたはSSHDなしでは不可能です。

私はif then fievalexecが呼び出されたときに-Djava.somethingで何をするのかを理解しようとして愚かに半日を過ごしたので知っているだけです。

3
grizzleybear123

私の考えでは最良の解決策:

  • ダウンロードしてインストールします 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'

3
Heanz

Windows用のGithubを使用してください。それはすべてのUnix環境の実行ファイルを含みます。

https://github-windows.s3.amazonaws.com/GitHubSetup.exe

2
Nederealm

これは古いスレッドですが、Windows 10を実行している人のためのものです。コントロールパネルの「Windowsの機能の有効化または無効化」からWindowsの機能を開くだけです。

「Linux用Windowsサブシステム」機能を選択してください。インストール後、あなたは 'Bash'を手に入れ、bash内でネイティブLinuxサーバを設定することさえできます。そしてもちろん、bash内のshコマンドも機能します。

1
Egbert

完全を期すために、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インストール(とにかく使用している)で十分であることがわかりました。

1

私は UnixUtil という、別の簡単な解決策を見つけました。

C:ドライブにダウンロードして解凍します。環境変数pathC:\UnixUtils\usr\local\wbinを含むように設定します。

これは重要。パスをC:\UnixUtils\binに設定しないでください

ウィンドウからシェルスクリプトを実行します。最初にコマンドdos2unixを使用してください、それからあなたはあなたの通常のコマンドを使用することができます。sh runide.sh

これはうまくいくでしょう。

0
Sridhar GV

大丈夫、それには多くの問題があります - #!/ bin/shを削除し、拡張子をbatに変更すれば、さらにいくつかの修正でうまくいくかもしれません。それからあなたはそのファイル名でそれを呼び出すことができます。

UNIXのシェルスクリプトの構文とWindowsのバッチファイルはあまり似ていません。 cygwin、あるいはunxutilsをいじってしまうことで両方でうまくいく可能性がありますが、絶対に環境が常に同じであると確信できない限り、それは頭痛の種ではありません。

0
Journeyman Geek

自宅(または職場)にLinuxボックスがあり、同じネットワークに接続されていて、このネットワークが安全であれば、これでうまくいく可能性があります。

  1. Windowsでフォルダ共有を作成します(非常に簡単ですが、ネットワークが侵入者から安全であることを確認してください)。
  2. mount //WinMachine/Share LinuxFolder(IIRC、そして Samba が必要)でLinuxにマウントしてください。
  3. PuTTY のようなものを使用して、そのLinuxボックスにリモートでログインします。
  4. マウントされたフォルダでコマンドを実行してください。
0
Camilo Martin

問題が実際にはファイルname.sh内にある可能性があります - あなたは.コマンドを使用しようとしていますが、それは有効なコマンドではない一種のシェル(例えばcshなど)を実行しようとしています。

それで、name.shは正しい#!/bin/shで始まりますか(実際にshを実行しようとしている場合)?

0
Andrew Jaffe

ここでの既存の答えはその時点では正しかったが、Windows 10 does は現在オプションで フルbashシェルを実行しているUbuntuの修正版 を含む。

実行可能になると、スクリプトはbash内から通常の方法で実行できます。

chmod +x myscript.sh
./myscript.sh

Windowsから直接スクリプトを実行したい場合は、同じディレクトリにショートカットを作成し、 'Target'を次のように設定します。

C:\Windows\System32\bash.exe -c "./myscript.sh"

スクリプトのパスがショートカットの場所を基準にしている場合(上の例のように)、[開始位置]フィールドも空白になっていることを確認してください。

0
Molomby