web-dev-qa-db-ja.com

Git Bashスクリプトを実行するためのWindowsショートカット

サーバーを実行し、Git Bashがインストールされているtest.shスクリプトがあると仮定すると、ダブルクリックしてフォアグラウンドでGit Bashでtesh.shを実行し、サーバーの出力を表示できるWindowsショートカットを作成するにはどうすればよいですか?

38
konyak

Git bashは既に次のような内容のバッチファイルです。

C:\WINNT\system32\cmd.exe /c ""C:\Git\bin\sh.exe" --login -i"

シェルのコンテキストでシェルスクリプトを実行する(および実行したままにする)が必要な場合は、コマンドラインで指定します。秘Theは、スクリプトファイル名が解釈されるときに、sh/Git環境の同等のパスではなく、Windowsパスを使用することです。

つまり、GitシェルでD:\temp\test.shファイルを実行し、実行したままにするには、次のバッチファイルを作成します。

C:\WINNT\system32\cmd.exe /c ""C:\Git\bin\sh.exe" --login -i -- D:\temp\test.sh"

一方、スクリプトを実行してシェルを元に戻すにしたい場合は、次のようにする必要があります。

  1. シェルをそのまま開きます
  2. ~/.profileを編集または作成します(vi ~/.profileを試してください)
  3. 次の行を追加します。~/test.sh(必要に応じてパスを調整します)

このように見える.profileで:

echo Executing .profile
/bin/sh ~/test.sh

そして、test.shは次のようになります。

echo Hello, World!

このプロンプトが表示されます:

Welcome to Git (version 1.7.11-preview20120710)


Run 'git help git' to display the help index.
Run 'git help <command>' to display help for specific commands.
Executing .profile
Hello, World!

[email protected] ~
$
62
ixe013

他の答えは機能しますが、questionに完全に答える短い解決策があります。

ダブルクリックしてGit Bashでtesh.shを実行できるWindowsショートカットを作成する方法

answerは、次のコマンドをショートカットのTarget:フィールドに追加します。

"C:\Git\bin\sh.exe" -l "D:\test.sh"

enter image description here

ここで、-l--loginの短縮形です。

このコマンドの機能をよりよく理解するには、公式のGNU Bashの呼び出し :に関するドキュメントを参照してください。

  • -l--login):このシェルを、ログインによって直接呼び出されたかのように動作させます。シェルが対話型の場合、これはexec -l bashを使用してログインシェルを開始することと同じです。シェルが対話型ではない場合、ログインシェルのスタートアップファイルが実行されます。 exec bash -lまたはexec bash --loginは、現在のシェルをBashログインシェルに置き換えます。

次の点にも注意してください。

  • sh.exeへのフルパスが必要か、PATH環境変数にそれを持っている(他の人が既に指摘しているように)。
  • 対話モードでシェルを強制的に呼び出す必要がある場合は、-iオプションを追加できます
  • 最後のパラメーターは、実行する必要があるスクリプトへのパスです。このパスはWindows形式である必要があります。
21
quasoft

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

  • 適切なシェルを呼び出します
  • 不要なウィンドウはありません
  • その後bashスクリプトを呼び出します
  • スクリプトの終了後、ウィンドウは開いたままになります

以下をせよ:

  1. たとえば、デスクトップ上のmintty.exeへのショートカットを作成します。 %installation dir%/Git/usr/bin/mintty.exeの下にあります

  2. ショートカットのプロパティを編集し、ターゲットを変更します(パスを保持します):

"C:\Program Files\Git\usr\bin\mintty.exe" -h always /bin/bash -l -e 'D:\folder\script.sh'


パラメーターの説明:

-h alwaysは、スクリプトの終了時にウィンドウを開いたままにするため、出力の読み取り中にウィンドウが消えることはありません(出力を読み取る必要がなく、ウィンドウを自動的に閉じる場合は削除します)。

-lは、このシェルをログインによって直接呼び出されたかのように動作させます。

-eは、パイプラインがゼロ以外のステータスを返すとすぐに終了します( 詳細 )。

cmdへの絶対パスではなく、環境変数_%ComSpec%_を使用することをお勧めします。

_%ComSpec% /c ""C:\Program Files (x86)\Git\bin\sh.exe" --login -i"
_

または、単にcmdコマンドでも、通常は%PATH%から入手できます。

_cmd /c ""C:\Program Files (x86)\Git\bin\sh.exe" --login -i"
_

C:\Program Files (x86)\Git\binPATHに追加した場合(これも一般的な解決策であり、TortoiseGitインストールの場合の1つです)、次のように使用できます。

_cmd /c "sh --login -i"
_
5
radistao