使用!source的gitconfig别名不起作用(zsh)

时间:2012-09-19 16:24:25

标签: git alias git-config

我有一个像这样的gitconfig:

[alias]
l = "!source ~/.githelpers && pretty_git_log"

当我运行它时,我得到了这个:

[desktop] git l
source ~/.githelpers && pretty_git_log: 1: source: not found
error: cannot run source ~/.githelpers && pretty_git_log: No such file or directory
fatal: While expanding alias 'l': 'source ~/.githelpers && pretty_git_log': No such file or directory

当我添加任何其他shell内置版进行测试时,它们运行良好:

[alias]
l = "!echo running from the builtin"

[desktop] git l
running from the builtin

知道为什么无法从git找到源命令?我正在运行zsh,但改为bash似乎没有什么区别:

[desktop] bash
[desktop] git l
source ~/.githelpers && pretty_git_log: 1: source: not found
error: cannot run source ~/.githelpers && pretty_git_log: No such file or directory
fatal: While expanding alias 'l': 'source ~/.githelpers && pretty_git_log': No such file or directory

1 个答案:

答案 0 :(得分:4)

失败的原因是!<command>构造试图通过该名称查找程序来运行。有/bin/echo程序(与echo内置的shell不同,但这是一个不同的故事),但没有/bin/source(或/usr/bin或任何其他地方)。根据{{​​1}}的性质,它不能是一个单独的程序。

请改为尝试:

source

根据需要将[alias] l = "!sh -c 'source ~/.githelpers && pretty_git_log'" 更改为sh(或其他任何内容)。