コマンドラインから実行できるファイルを作成しようとしています。
.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`
これにより、目的のディレクトリに戻ることはできませんが、役に立ちます。