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


67

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

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

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

回答:


74

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

明確にするために、Windowsには.shファイルをサポートする組み込みユーティリティがありません。これを実行するには、Cygwinなどのサードパーティツールをインストールする必要があります


7
GitをWindowsにインストールするだけではありませんか?そうすると、シェルスクリプトがGit関連のタスクを実行していない場合でも、シェルスクリプトのサポートが追加されるようです。
DaveTheMinion

2
@DavidBはい、G:sh.exeを含むあらゆる種類の便利なツールをそこに配置するので、C:\ Program Files(x86)\ Git \ bin(またはコンピューターにあるもの)をPATHに入れると機能します
Sumyrda

1
@DavidBはい、Git Bashはそれで何をすべきかを知っています、正しいです!
レジェンド

13

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

Linuxでは、スラッシュはパス区切り文字です。Windowsでは、バックスラッシュはパス区切り記号であり、スラッシュは一般に引数を示します。

したがって、Windowsは、「。」というコマンドを実行しようとしているとみなします。引数「/name.sh」を解析します。正しい規則は「。\ name.sh」です。さらに、Windowsは現在のディレクトリでコマンドを自動的に検索するため、「name.sh」と入力するだけです。

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

ただし、以前のコメントの1つから判断すると、スクリプトの名前をname.batに変更し、「#!/ bin / sh」行を削除することもできます。これで、Windowsが理解できるバッチファイルが作成されました。バッチファイルの詳細については、こちらをご覧ください


12

別の方法として、ダークサイドに戻ってLinuxをインストールすることもできます。プロンプトから:

sh runide.sh

または

sudo sh runide.sh

プログラムが実行され、システムも改善されます。


15
「金持ちになって、誰かにお金を払ってくれ」と言っているようなものです
-Funkodebat

7

私の意見では最高のソリューション:

  • 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'


これは機能しません。@FOR / f "tokens = *"%i IN( 'docker-machine env --shell cmd default')DO @%iを実行すると。予期しないトークンを取得します(
スティーブトムリン

5

ガソリンではなくオレンジジュースで車を走らせようとしています。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ツール。これらの特別な機会のために、フラッシュドライブに入れてください。


3

誰か/がコマンドと\パスにMS-DOSを使用していると言った。これは少し誤解を招きます。私の例を見てください:

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

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

私が知っているのは、私が愚かにも半日を費やして、呼び出されたときに何if then fiをしeval、何をするのかを理解しようとしたからです。exec-Djava.something


2

Github for Windowsを使用します。すべてのUnix環境の実行可能ファイルが含まれています。

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


1
具体的には、Gitをインストールします。Github for WindowsのインストールにBashシェルが含まれる唯一の理由は、Gitに付属しているためです。:)
ZaLiTHkA

良い代替手段、ありがとう、追加のツールをインストールする必要はありません。+1
ギルヘルムナシメント

1

UnixUtilと呼ばれる別の簡単な解決策を見つけました。

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

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


1

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


1

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

機能「Linux用Windowsサブシステム」を選択します。インストール後、「Bash」ができ、bash内でネイティブLinuxサーバーを構成することもできます。そしてもちろん、bash内のshコマンドも機能します。


0

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

だから:(実際に実行しようとしている場合)name.sh正しいから始まりますか?#!/bin/shsh


1
はい、起動します#!/ bin / sh cd D:\ Raghu D:winzip32.exe -min -a -r D:\ pファイルの内容

0

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機能でさえサポートされていないか、長い構文が必要です。
カミロマーティン

2番目の段落では、かなりの量の作業がなければ機能しない可能性が高いという事実について説明します。
ジャーニーマンオタク

まあ、あなたは正しい。
カミロマーティン

0

自宅(または職場)にLinuxボックスがあり、同じネットワークに接続されていて、このネットワークが安全な場合、これでうまくいくかもしれません。

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

0

Windowsからシェルスクリプトを実行するには。最初にコマンドdos2unixを使用してから、通常のコマンドsh runide.shを使用できます。

これで解決します。


申し訳ありませんが、わずかな修正が必要です。コマンド「dos2unix runide.sh」を使用します。出力:dos2unix:ファイルrunide.shをUNIX形式に変換してから、コマンド「sh runide.sh」を使用します。これにより、シェルスクリプトが確実に実行されます。幸せな学習
スリダーGV

問題はファイル形式ではなく、Windowsでのシェルの欠如についてでした。
アルケマール

0

ここでの既存の回答はその時点では正しかったものの、Windows 10にオプションでフルbashシェルを実行するUbuntuの修正バージョンが含まれています

実行可能になったら、bash内から通常の方法でスクリプトを実行できます。例:

chmod +x myscript.sh
./myscript.sh

Windowsから直接スクリプトを実行する場合は、同じディレクトリにショートカットを作成し、「ターゲット」を次のように設定できます。

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

スクリプトのパスがショートカットの場所に関連している場合(上記の例のように)、[開始]フィールドも空白であることを確認します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.