我正在编写一个使用该命令的 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 别名创建复杂的脚本,它可以处理子 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 别名?
答案1
这可能会失败,因为您/bin/sh
不支持pushd
并且popd
(例如这是破折号)。
您可以通过显式指定要使用的 shell 来确保pushd
和可以在您的别名中使用:popd
pushdtest = !bash -c "'f() { pushd /home; popd; }; f'"