
私はこのコマンドを使用して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
ていないため失敗する可能性がありますpushd
。popd
例えばこれがダッシュです。)
使用するシェルを明示的に指定して、pushd
エイリアスで使用できることを確認できます。popd
pushdtest = !bash -c "'f() { pushd /home; popd; }; f'"