質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

JMeter

Apache JMeterとは、Webアプリケーションの負荷テストをするためのJavaアプリケーションです。

Q&A

解決済

1回答

480閲覧

なぜjmeter.batがGitBashで実行できるのか

aga9

総合スコア1

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

JMeter

Apache JMeterとは、Webアプリケーションの負荷テストをするためのJavaアプリケーションです。

0グッド

0クリップ

投稿2023/09/28 09:49

編集2023/09/28 11:29

実現したいこと

  • jmeter.batファイルがWindows10上のGitBashで実行できる理由が知りたい。

前提

実行環境は以下の通りです。
・Windows10
・Jmeter5.6.2
・Java20.0.2
・git2.40.0.windows.1

Windows10端末にてJmeterを用いてwebサイトの負荷テストを行っています。
JmeterのGUI起動にあたり、GitBashからjmeter.bat実行でもJmeter起動できたのですが理由が分かりません。

実行したコマンド

GitBashにてこちらのファイルを以下のコマンドにて実行しました。

./jmeter.bat

実行した結果、以下の内容がGitBashに表示され、JmeterがGUIモードで起動しました。

================================================================================ Don't use GUI mode for load testing !, only for Test creation and Test debugging. For load testing, use CLI Mode (was NON GUI): jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder] & increase Java Heap to meet your test requirements: Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file Check : https://jmeter.apache.org/usermanual/best-practices.html ================================================================================

batファイルはWindowsバッチ言語で書かれていてbashでは実行できないという認識のため、なぜGitBashで実行できるのか分かりません。

Git for Windowsを使用しているからでしょうか?
それとも気付かぬうちに何か設定を行った可能性が…?

環境周りの学習を始めたばかりの未熟者であるため不足する点が多々あるかと思いますが、何卒よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2023/09/28 10:28

そのBATファイルのナカミを提示しましょう
aga9

2023/09/28 11:30

コメント頂きありがとうございます。ファイルのURLを追記致しました。
guest

回答1

0

ベストアンサー

Git for Windowsを使用しているからでしょうか?

ということでしょう。

Bashが使っていると思われる実行プログラム起動の(Unix系の)関数であるexecveをWindowsで使ってみると.exeファイルだけでなく.batファイルも起動できます。
その場合は、内部的にcmd.exe /c foo.bat ~~のように実行されます。これはWindowsの機能。

他にも、Windows用のBashのコマンド起動処理は、
・PATHからの探索の際に、ファイル名の大文字小文字を区別しない
・PATHからの探索の際に、見つからない場合は、コマンド名に.exeを付加したファイル名も探す
という点がUnix/Linuxと異なりますが、前者はWindowsの機能で、後者はおそらくbashの機能だと思います。

投稿2023/09/28 15:55

編集2023/09/28 16:29
otn

総合スコア85768

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aga9

2023/09/29 10:01

ご回答頂きありがとうございます。 > ...という点がUnix/Linuxと異なります Windows用のBashはそもそもLinuxと異なる点があることを恥ずかしながら今知りました…あくまでも「Windows環境でLinuxのコマンドをWindowsのシステムを使って動作させる」ものなんですね。当たり前のようで理解できていませんでした。 > 内部的にcmd.exe /c foo.bat ~~のように実行されます。 この動作がWindowsで行われるのは、「実行したいファイルの種類に応じてWindowsが実行するアプリケーションを選択している」ためでしょうか?エクセルファイルであればエクセルアプリを、バッチが書かれたテキストファイルであればコマンドプロンプトを、といった感覚です。
otn

2023/10/04 05:00 編集

> Windows用のBashはそもそもLinuxと異なる点があること ・Bashのコード内でWindowsの考慮をしている物。 ・Bashのコード内では特別のWindows対応はしてないが、呼び出すWindowsOS機能の中でWindowsに適した処理をしている物。 があるかと思います。 例えば、PATHに C:\Windows\System32 が入っていればBash内では /c/Windows/System32 に書き直すとかは前者。逆に、/c/Temp/aa にアクセスした場合、OSのファイル処理関数を呼ぶ時の引数は C:/Temp/aa に変換してから呼ぶとかも。 後者は、ファイル名の大文字小文字の同一視とか。 これと違い、コマンドラインでTABキーを押してファイル名補完するのはBash内部の処理なので、大文字小文字区別される。これもBash内で考慮して区別しないでくれると便利なのですが。
otn

2023/09/29 15:30

> > 内部的にcmd.exe /c foo.bat ~~のように実行されます。 > この動作がWindowsで行われるのは、「実行したいファイルの種類に応じてWindowsが実行するアプリケーションを選択している」ためでしょうか?エクセルファイルであればエクセルアプリを、バッチが書かれたテキストファイルであればコマンドプロンプトを、といった感覚です。 いいえ。execve(やその先のWin32API関数)で実行可能なのは、実行形式の EXE COM と、バッチファイルの BAT CMD だけです。他の普通の「拡張子関連付け」は駄目です。 拡張子関連付けで起動するのは別のAPIですが、Bashからは多分使えないので、"cmd /c foo.xlsx" くらいでしょうか。
aga9

2023/10/04 04:15

コメント頂きありがとうございます。お返事が遅くなってしまい申し訳ございません。 公式のドキュメントを読み漁っていたら遅くなってしまいました。 以下のサイトに挙動の詳細が載っておりました。 https://learn.microsoft.com/en-us/windows/wsl/filesystems 挙げてくださった具体例がドキュメントを探す際の大きなヒントとなり、非常に助かりました。 「どうやらバッチがBashで使えるらしい」という理解度でしたが、ドキュメントによる裏付けを含め納得の挙動であると確認できました。ありがとうございます。
otn

2023/10/04 06:26

参考ページURLありがとございます。これはWSL2の説明ですね。WSL2は仮想マシンの中でLinuxを動かすわけですが、Git-Bashは、MSYS2やWSL1と同じで、Windowsに移植されたLinuxコマンドをWindowsOS上で動かすので、仕組みは大きく異なります。
aga9

2023/10/06 00:27

コメント頂きありがとうございます。 BA選択後もコメントできるシステムを知らず気付きませんでした…大変失礼いたしました。 > これはWSL2の説明ですね。 > 仕組みは大きく異なります。 WSL1,2でそれほど大きく仕組みが異なることを知りませんでした。WSLというワードから安易に納得してしまいました。WSL1,2の違いを調べ、GitBashのドキュメントを再度調べてみます。 コメントを頂けて大変助かりました。誤解したまま学習を進めるところでした…貴重なお時間を頂き大変恐縮です。
otn

2023/10/06 03:55

おおざっぱに言うと、WSL2は、VMwareやVirtualBoxといった仮想マシン環境をインストールして、その中の仮想マシンにLinuxOSをインストールした物に近い(イコールでは無いが)。 GitBashやWSL1は、MSのVisualCのような普通のWindows用Cコンパイラを使って、LinuxコマンドのCソースをコピペしてWindowsで動くように修正してコンパイルして出来たWindows用EXEファイルに近い(イコールでは無いが)。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問