2012-09-19 2 views
3

내가 이런 gitconfig를 가지고 작업 (zsh을)하지 않는gitconfig 별명은

[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 

나는 다른 쉘을 추가 할 때 테스트 할 내장 함수는 다음과 같습니다.

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

[desktop] git l 
running from the builtin 

왜 source 명령을 git에서 찾을 수 없습니까? 나는 zsh을 실행하고 있지만, 배쉬로 변경하면 변화를 보이지 않았다

[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

미안하지만 질문이 어리석은 데 왜 '소스'를 붙일 필요가 있습니까? – CharlesB

+0

이것은 실제로 Gary Bernhardt의 gitconfig의 예이며 .githelpers에는 pretty_git_log()라는 함수가 있습니다. 소스 호출이 pretty_git_log 함수를 명령 줄에서 명령으로 사용할 수 있다고 가정했지만 완전히 확신하지는 못했습니다. – user1244166

답변

3

실패는 !<command> 구조를 실행하기 위해 그 이름하여 프로그램을 찾으려고한다는 사실에서 비롯됩니다. /bin/echo 프로그램이 있습니다 (쉘이 echo에 내장 된 것과 다르지만 다른 이야기입니다). /bin/source (또는 /usr/bin 또는 다른 곳)이 없습니다. 어떤 source의 특성상 별도의 프로그램이 될 수 없습니다.

대신보십시오 : 필요에 따라

[alias] 
l = "!sh -c 'source ~/.githelpers && pretty_git_log'" 

변경 shbash (또는 무엇이든).

+0

감사합니다. 나는 바이너리 버전을 가지고 있지 않은 다른 빌트인들과 실제로 이것을 시도했다. 나는 어쨌든 그렇게 생각했다. 그리고 그들은 또한 일했지만, 어쨌든 당신의 예제가 효과가 있었다! 감사. – user1244166

+0

l = "! bash -c 'source ~/.githelpers && pretty_git_log'"감사합니다! – user2167582