我有一个像这样的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
答案 0 :(得分:4)
失败的原因是!<command>
构造试图通过该名称查找程序来运行。有/bin/echo
程序(与echo
内置的shell不同,但这是一个不同的故事),但没有/bin/source
(或/usr/bin
或任何其他地方)。根据{{1}}的性质,它不能是一个单独的程序。
请改为尝试:
source
根据需要将[alias]
l = "!sh -c 'source ~/.githelpers && pretty_git_log'"
更改为sh
(或其他任何内容)。