Bash 是否通过创建git特有的子命令文件来扩展shell脚本,是否可以对其他脚本进行模拟?

Bash 是否通过创建git特有的子命令文件来扩展shell脚本,是否可以对其他脚本进行模拟?,bash,shell,Bash,Shell,我知道,git允许您将可执行文件放置在bin目录中,当给定正确的命名约定时,该目录将充当子命令垃圾桶/垃圾桶流量,/bin/git火灾 $git流量 $git fire 此功能是否在git可执行文件中,或者任何可执行文件都可以通过使用此文件命名约定来覆盖 我已经用/bin/npm custom和$npm custom尝试过了,但是它执行的是/bin/npm可执行文件,而不是/bin/npm custom,所以我假设默认情况下这不起作用 如果这是通过原始命令脚本(git)实现的,那么可以通过另一种

我知道,
git
允许您将可执行文件放置在
bin
目录中,当给定正确的命名约定时,该目录将充当子命令<代码>垃圾桶/垃圾桶流量,
/bin/git火灾

$git流量

$git fire

此功能是否在git可执行文件中,或者任何可执行文件都可以通过使用此文件命名约定来覆盖

我已经用
/bin/npm custom
$npm custom
尝试过了,但是它执行的是
/bin/npm
可执行文件,而不是
/bin/npm custom
,所以我假设默认情况下这不起作用

如果这是通过原始命令脚本(
git
)实现的,那么可以通过另一种方式复制此功能,可以在执行脚本之前读取命令

.bash\u配置文件

source~/。检查子命令的可执行项


提前感谢

要做到这一点,通常您必须使用当前的
git
命令,这应该很容易,除非您已经以某种方式完成了。例如,您可以创建一个默认返回到原始命令的函数:

git() {
    case "$1" in
        "my_subcommand")
            …
           ;;
        *)
           command git "$@"
           ;;
    esac
}

特别是在Git的情况下,您可以创建,例如
st=status

,一般来说,您必须使用当前的
Git
命令,这应该很容易,除非您已经以某种方式完成了。例如,您可以创建一个默认返回到原始命令的函数:

git() {
    case "$1" in
        "my_subcommand")
            …
           ;;
        *)
           command git "$@"
           ;;
    esac
}

特别是在Git的情况下,您可以创建,例如
st=status

,因此我只需要为每个我希望为其添加子命令的可执行文件编写一个函数。好的,谢谢。应该是
command$@
(不带引号)。否则,分词就不起作用了happen@hek2mgl没有<代码>“$@”扩展到每个参数,单独引用,因此基本上这是传递参数不变的方法。@l0b0您是对的<代码>$@当双引号内的变量处理方式与双引号内的其他变量不同时。我从来不知道,谢谢!因此,我只需要为我希望为其添加子命令的每个可执行文件编写一个函数。好的,谢谢。应该是
command$@
(不带引号)。否则,分词就不起作用了happen@hek2mgl没有<代码>“$@”扩展到每个参数,单独引用,因此基本上这是传递参数不变的方法。@l0b0您是对的<代码>$@当双引号内的变量处理方式与双引号内的其他变量不同时。我从来不知道,谢谢!