PATH의 Git 사용자 정의 명령이 작동하지 않습니다.

PATH의 Git 사용자 정의 명령이 작동하지 않습니다.

나는 다음 ~/bin/git-continue~/bin/git-abort같은 스크립트를 가지고 있습니다.

#!/bin/bash

repo_path=$(git rev-parse --git-dir)

if [ $? -ne 0 ]; then
    exit $?
fi

if [ -d "${repo_path}/rebase-merge" ]; then
    git rebase --continue
elif [ -d "${repo_path}/rebase-apply" ]; then
    git rebase --continue
elif [ -f "${repo_path}/MERGE_HEAD" ]; then
    git merge --continue
elif [ -f "${repo_path}/CHERRY_PICK_HEAD" ]; then
    git cherry-pick --continue
elif [ -f "${repo_path}/REVERT_HEAD" ]; then
    git revert --continue
else
    echo "No something in progress?"
fi

또한 다음 위치에 ~/bin디렉토리 를 배치했습니다 .PATH~/.bashrc

[[ ":$PATH:" != *":~/bin:"* ]] && PATH="~/bin:${PATH}"
export PATH

그래서 $ git-continue제대로 작동하는지 확인했지만 git continue다음과 같은 오류가 출력됩니다. git: 'continue' is not a git command. See 'git --help'.

이 오류의 가능한 원인은 무엇을 찾을 수 있습니까?

답변1

확장되지 않은 가 PATH포함되어 있습니다 ~/bin. 귀하의 쉘은 의미를 이해 ~/하지만 git분명히 그렇지 않습니다. ~/bin에 전체 경로를 포함해야 합니다 PATH.

PATH=~/"bin:${PATH}"대신 을 사용하면 PATH="~/bin:${PATH}"물결표 확장이 발생하고 PATH확장된 경로가 저장됩니다. 하지만 :~/bin:내부 에 문제가 있습니다 [[ ]]. 물결표를 인용하지 않는 것이 유일한 조건은 아니며( 의 "물결표 확장" 참조 man 1 bash) 이로 인해 확장이 :~/bin:어려워집니다. 그리고 .NET의 전체 경로에 대해 테스트하려면 이를 확장해야 합니다 PATH.

사용하기가 더 쉽습니다 $HOME.

[[ ":$PATH:" != *":$HOME/bin:"* ]] && PATH="$HOME/bin:${PATH}"
export PATH

$HOME전체 문자열이 PATH변수에 할당되기 전에 확장됩니다. 이는 PATH이제 다음을 포함한다는 것을 의미합니다.가득한.$HOME/bingit이 길을 이해할 것이다.

답변2

당신은맞춤 별칭이 문제를 해결하려면. 별칭을 사용하는 것이 사용자 정의에 대해 알지 못하고 현재 명령에서 아무 것도 처리하지 않고 일련의 명령을 실행하려는 사람을 디버깅하는 것이 더 쉽기 때문에 더 바람직할 수 있습니다.

또한보십시오git 별칭에 bash 스크립트를 직접 포함하는 방법StackOverflow에서.

관심 있는 사람이라면 현재 이 동작에 대한 유일한 문서가원천대로그래서 질문그리고git-scm 문제.

관련 정보