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

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

新規登録して質問してみよう
ただいま回答率
85.48%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Q&A

解決済

2回答

9495閲覧

Windows git-bash.exeでバッチファイルを実行

eosserver

総合スコア6

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

1グッド

1クリップ

投稿2017/11/11 06:06

###Windows git-bash.exeでバッチファイルを実行したい
以下のようなバッチファイルcommit.batをgit-bashから実行しましたが,エラーがでてしまいます.
ローカルリポジトリの変更をコミットするバッチファイルです.

commit.bat

1@echo off 2cd c:/home/sol-server/system/Upfiles/work 3git add . 4git commit -a -m "test"

###発生している問題・エラーメッセージ
git-bash.exeで実行した際のエラーメッセージ

$ commit.bat bash: commit.bat: command not found

###試したこと
コマンドプロンプトから同じバッチファイルを実行したところ,問題なく実行されました.
なぜコマンドプロンプトでは成功して,git-bashでは実行できないのでしょうか?

Toritaus👍を押しています

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

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

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

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

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

guest

回答2

0

ベストアンサー

bashはUnix系OSで用いられるシェル(コマンドインタープリタ)の一種で、Windows標準搭載のコマンドプロンプトとは別のものです。

コマンドプロンプトの場合、作業ディレクトリーにあるバッチファイルは

commit.bat
commit

とすれば実行できますがbashの場合、PATH環境変数に含まれているディレクトリーにないものは「例え作業ディレクトリーにあっても」パスを明示的に指定しないと実行できません。また拡張子があった場合は(exeなどのを例外を除き)省略できないようです。

./commit.bat

とすると実行できると思います。

投稿2017/11/11 06:24

KSwordOfHaste

総合スコア18394

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

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

eosserver

2017/11/13 04:59

回答ありがとうございます,解決しました.
guest

0

コマンドプロンプトは Bash ではなく、Bash はコマンドプロンプトではないからです。

commit.bat は Windows のバッチファイルであるため Bash では使えません。次のように書き換えます。

bash

1#!/bin/env bash 2 3cd c:/home/sol-server/system/Upfiles/work 4git add . 5git commit -a -m "test"

ファイル名は commit か、拡張子をつけるなら .sh などが良いと思います。
Windows のコマンドプロンプトと異なり、Bash はデフォルトでは現在のディレクトリーは PATH が通っていません。実行するには次のようにします。

sh

1$ ./commit

投稿2017/11/11 06:26

chitoku

総合スコア1610

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

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

KSwordOfHaste

2017/11/11 06:31 編集

バッチファイル使えないかと自分も思ったんですが・・・ git-bashでbatファイルを実行するとcmd.exeで実行されるみたいです。実際、 echo $PATH とかくと $PATH として表示されず echo %PATH% とかくと、環境変数の中身が表示されました。 --- しかしながらgit-bashを使うならbashのスクリプトで書いた方がよいとは思います。
chitoku

2017/11/11 06:37

手元で git-bash.exe を起動してみましたが(MINGW64 が起動しました、) echo %PATH% は %PATH% が出力され echo $PATH で環境変数が出力されます。 C:\Program Files\Git\git-cui.exe は明らかにコマンドプロンプトですよね……うーん。
KSwordOfHaste

2017/11/11 06:43 編集

ちょっと曖昧な言い方だったかな・・・ git-bashの元でxxx.batというスクリプトを ./xxx.bat として実行した際にxxx.batに以下のように書いてあると echo %PATH% <=(A) echo $PATH <=(B) (A)は環境変数が表示され、(B)は$PATHとしか表示されないということがいいたかったのです。git-bashは拡張子がbatのファイルを実行すると自動的にcmd.exeを通じて実行するのではないかというのが自分の推測です。 当然ながら(A),(B)をgit-bashの元で直接実行すると(B)の方が環境変数の中身が表示されます。
chitoku

2017/11/11 06:57

なるほど…… .bat のファイルだと確かに cmd.exe が走っているようですね
KSwordOfHaste

2017/11/11 07:50

これがMinGWのbashなんだなぁと思ってふとcygwinのbashでやってみたら同じ動作でした。やはりWindows上で動作するコマンドインタープリタはbatをそのまま実行できるように配慮されているということなんでしょうね。 今まで知りませんでした・・・
eosserver

2017/11/13 04:59

回答ありがとうございます,解決しました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問