Pushdがgitエイリアスで正しく拡張されない

Pushdがgitエイリアスで正しく拡張されない

私はこのコマンドを使用してgitエイリアスを作成していますpushd。しかし、コマンドが正しく拡張されていないようです。


オペレーティングシステム

編集する Windows 10のWSLでUbuntuを実行しています。

$ uname -a
Linux PowerSpecX251 4.4.0-19041-Microsoft #1237-Microsoft Sat Sep 11 14:32:00 PST 2021 x86_64 x86_64 x86_64 GNU/Linux

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.7 LTS
Release:        16.04
Codename:       xenial

質問/問題

私はこの構文を使用して、サブシェルと複数のコマンドを処理できるgitエイリアスの複雑なスクリプトを作成します。

diff-stat = ! "f() { git diff --stat=$(tput cols) $1 ; }; f"
scrub = ! "f() { git reset --hard; git clean -f -f -d; }; f"

ただし、そのコマンドを使用してエイリアスを生成するとエラーが発生しますpushd。ディレクトリのパラメータが正しく渡されないようです。

$ grep pushdtest .gitalias
pushdtest = ! "f() { pushd /home; popd; }; f"

$ git pushdtest
 f() { pushd /home; popd; }; f: 1:  f() { pushd /home; popd; }; f: pushd: not found
 f() { pushd /home; popd; }; f: 1:  f() { pushd /home; popd; }; f: popd: not found
fatal: While expanding alias 'pushdtest': ' f() { pushd /home; popd; }; f': No such file or directory

私は成功せずに引用符を追加しようとしました。

$ git pushdtestquotes
 f() { pushd '/home'; popd; }; f: 1:  f() { pushd '/home'; popd; }; f: pushd: not found
 f() { pushd '/home'; popd; }; f: 1:  f() { pushd '/home'; popd; }; f: popd: not found
fatal: While expanding alias 'pushdtestquotes': ' f() { pushd '/home'; popd; }; f': No such file or directory

pushdこのコマンドを正しく使用するgitエイリアスを作成する方法は?

ベストアンサー1

サポートし/bin/shていないため失敗する可能性がありますpushdpopd例えばこれがダッシュです。)

使用するシェルを明示的に指定して、pushdエイリアスで使用できることを確認できます。popd

pushdtest = !bash -c "'f() { pushd /home; popd; }; f'"

おすすめ記事