BashスクリプトでCDを使用して「git checkout」を実行したいと思います。

BashスクリプトでCDを使用して「git checkout」を実行したいと思います。

コマンドラインから実行できるファイルを作成しようとしています。

.bashrc

export gorepo="cd /home/pol/dcu/practicum/gitrep"

そして

alias gorepo="/home/pol/dcu/practicum/gitrep"

次に、$ PATHの実行可能ファイルから

#!/bin/bash
gorepo # gorepo is defined in .bashrc
git checkout

エクスポート、エイリアスの指定、シェル変数、bash関数の使用など、さまざまな組み合わせを試しましたが、役に立ちませんでした。とてもできません!

私のリポジトリに単にCDを挿入し、git checkoutを実行してリポジトリディレクトリのシェルに戻るコマンドをどのように作成できますか?

答え1

gorepoこれはリテラルテキストを含む変数を宣言しますcd /home/pol/dcu/practicum/gitrep

export gorepo="cd /home/pol/dcu/practicum/gitrep"

gorepoこれはプログラムを実行するためのコマンド(別名)を宣言します/home/pol/dcu/practicum/gitrep

alias gorepo="/home/pol/dcu/practicum/gitrep"

これは、シェルスクリプトのコンテキストで定義されていないエイリアスを使用しようとします。

#!/bin/bash
gorepo # gorepo is defined in .bashrc
git checkout

私の考えでは、あなたが望むのは、ディレクトリを変更するこのプログラムのようです。スクリプト実行中コードを確認してください。

#!/bin/bash
cd /home/pol/dcu/practicum/gitrep
git checkout

.bashrcまたは、現在のシェルコンテキストでディレクトリを変更してコードを確認するエイリアス(for):

alias gorepo='cd /home/pol/dcu/practicum/gitrep && git checkout'

答え2

定義cd: 現在のシェルの作業ディレクトリを変更します。スクリプトを起動すると、そのスクリプトを実行するために別のシェル(プロセス)が起動されます。それシェルプロセスは、実行中に作業ディレクトリを正常に変更しましたが、スクリプトが終了するcdと、スクリプトを起動した以前のシェルに戻ります。

この問題の解決策は次のとおりです。

1) 次のいずれかの方法で「購入」を介してスクリプトを実行します。

bash$ source yourscript

または(まったく同じ):

bash$ . yourscript

これにより、現在のシェルでスクリプトが実行され、cdプロセスのディレクトリが変更され、スクリプトが終了するまで保持されます。

2) エイリアスを定義します。 Aliasコマンドは現在のシェルプロセス内でも実行されます。これを行う方法についてはroaimaの答えを参照してください。

答え3

これがあなたが本当に欲しいものなのか、それともあなたがやろうとしていることに対する最善の解決策だと思うのかわかりません。

子供は-C <repopath> <command> <branch>

観光の場合

git -C /home/pol/dcu/practicum/gitrep checkout master`

これにより、目的のディレクトリに戻ることはできませんが、役に立ちます。

関連情報