Shell-Script
pushd 在 git 別名中沒有正確擴展
我正在編寫一個使用該
pushd
命令的 git 別名。但是,該命令似乎沒有正確擴展。作業系統
編輯 我在 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 別名創建複雜的腳本,它可以處理子 shell 和多個命令:
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 別名?
這可能是失敗的,因為你
/bin/sh
不支持pushd
和popd
(例如它是破折號)。您可以通過明確指定要使用的 shell 來確保
pushd
和popd
在您的別名中可用:pushdtest = !bash -c "'f() { pushd /home; popd; }; f'"