Mac OS X에서 git-completion.bash를 작동시키는 방법?


92

http://blog.bitfluent.com/post/27983389/git-utilities-you-cant-live-without 에 따라 git-completion.bash내 추가/opt/local/etc/bash_completion.d/git-completion

그리고 나는 PS1='\h:\W$(__git_ps1 "(%s)") \u\$ '.bashrc_profile을 넣었다.

그러나 지금 나는 내가하는 -bash: __git_ps1: command not found모든 일을하고 cd있습니다.

내가 무엇을 놓치고 있는지 말해 줄 수 있습니까?


답변:


65

새로운 Snow Leopard 설치에 MacPorts 를 사용하여 git을 설치했습니다. .dmg 이미지에서 MacPorts를 설치 한 후 다음은 Terminal.app의 명령입니다.

sudo port selfupdate
sudo port install git-core +bash_completion

SVN 저장소 및 문서에서 가져 오기를 지원하려면 두 번째 줄 대신 이것을 사용하십시오.

sudo port install git-core +bash_completion +doc +svn

그런 다음 ~ / .profile 또는 ~ / .bash_profile에 다음을 추가하십시오.

# MacPorts Bash 쉘 명령 완료
만약 [-f / opt / local / etc / bash_completion]; 그때
    . / opt / local / etc / bash_completion
fi

또는 Mountain Lion 버전 2.1.2 이후의 MacPorts :

# MacPorts Bash 쉘 명령 완료
만약 [-f /opt/local/etc/profile.d/bash_completion.sh]; 그때
  . /opt/local/etc/profile.d/bash_completion.sh
fi

또는 최신 버전의 git이 설치된 MacPorts의 경우 :

만약 [-f /opt/local/share/git-core/git-prompt.sh]; 그때
    . /opt/local/share/git-core/git-prompt.sh
fi

참고 : bash_completion.sh에는 bash 4.1 이상이 필요합니다. 완료가 작동하지 않으면 echo $BASH_VERSION문제가 있는지 확인하십시오. 그렇다면 입력하여 MacPorts bash를 입력 bash하고 자식 완료를 다시 시도하십시오.


방금 붙여 넣은 후에도 여전히 OP에 오류가 발생합니다. = \. 포함 된 내용을 어떻게 알 수 있습니까? 나는 bash_completion 소스가 없습니다
NullVoxPopuli

최신 버전의 git / macport / bash-completion에서는 프롬프트가 다른 파일에 있습니다. 참조 : trac.macports.org/ticket/36334 if [ -f /opt/local/share/git-core/git-prompt.sh ]; then . /opt/local/share/git-core/git-prompt.sh fi
Yehosef

3
4.1 이상이 /opt/local/etc/profile.d/bash_completion.sh필요 하기 때문에 $BASH_VERSIONMacPorts 2.1.3이 설치된 Mac OS X 10.8.3에서 다음을 수행해야했습니다. Mac OS X 로그인 쉘을 기본 /bin/bash(3.2.48 (1)-릴리스)에서 MacPorts /opt/local/bin/bash(4.2)로 전환하십시오. .42 (2) -release)는 여기에 설명되어 있습니다 : stackoverflow.com/a/791244/287984. 기본적으로if [ `grep /opt/local/bin/bash /etc/shells` ]; then echo /opt/local/bin/bash | chsh -s /opt/local/bin/bash; else echo /opt/local/bin/bash | sudo tee -a /etc/shells; chsh -s /opt/local/bin/bash; fi
Uwe Günther

나를 위해 일했다. Macports + here에서 제안 된 모든 변경 사항 /bin/bash으로 Terminal.app 에서 교체해야 했습니다 . /opt/local/bin/bash.bash_profile
bgs

1
: 4.1 강타로 이동합니다 이상 여기의 지시를 따를 수 apple.stackexchange.com/questions/70132/...
ThomasW을

55

homebrew를 사용하여 git을 설치 한 경우 MacPorts 조언을 약간 조정 .bash_profile하고.bashrc

if [ -f `brew --prefix`/etc/bash_completion.d/git-completion.bash ]; then
. `brew --prefix`/etc/bash_completion.d/git-completion.bash
fi

homebrew ist를 사용하여 git이 올바르게 설치되었는지 확인하는 가장 좋은 방법은 실행하는 것입니다

brew info git

git bash complete의 설치 디렉토리 출력을 확인하십시오.

Git의 최신 버전 (1.7.12)도 프롬프트를 활성화하려면 다음이 필요합니다.

if [ -f `brew --prefix`/etc/bash_completion.d/git-prompt.sh ]; then
    . `brew --prefix`/etc/bash_completion.d/git-prompt.sh
fi

에 대한 자세한 내용 은이 스택의 superuser.com/a/477749/90231 답변을 __git_ps1참조하십시오 .
RichVel

26

당신이해야 할 모든 장소 git-completion.bash사용자 홈에 파일을 bin디렉토리와 당신의 다음 배치 .profile또는 .bash_profile파일 :

export PATH="$HOME/bin:$PATH"
source ~/bin/git-completion.bash
PS1='[\u@\h \w$(__git_ps1 " (%s)")]\$ '

이것이하는 일은 로컬 저장소가 PATH에 있고 source명령 이 제대로 작동하는지 확인하는 것입니다. 물론 PS1 변경은 현재 체크 아웃 된 분기를 프롬프트에 넣습니다.

따라서 MacPort를 설치하지 않고 "완료"버전의 GIT를 설치하십시오 (특히 이미 설치되어있는 경우 자극적 임).



1
프롬프트에서 PS1 항목과 색상을 결합하는 방법에 대해 궁금한 분은 stackoverflow.com/questions/816790/…
Nickolay

1
보다 정확하게는 git-completion.bash는 단지 당신의 어딘가에 있어야합니다 $PATH. /usr/local/bin/기존을 수정할 필요가 없도록 채굴하기로 결정했습니다 $PATH.
metavida

13

기존 MacPorts에 대한 현재 답변은 정확하지만 최신 MacPorts에 새로운 오류가 발생하여 동일한 오류가 발생합니다.

현재 bash-completion 패키지 (2.0 r1)는 제대로 작동하려면 적어도 bash 4.1이 필요합니다. 일반적인 OS X 터미널은 /bin/bash3.x 만 사용 합니다. /opt/local/bin/bash -lMacPorts 설명서 ( http://trac.macports.org/wiki/howto/bash-completion)에 설명 된대로 사용할 터미널 설정을 변경해야 합니다.


이것은 macports를 업데이트 한 후에 만 ​​문제가 발생하기 시작한 가장 정확한 대답입니다. 터미널에서 macports bash를 사용하는 유일한 단점은 터미널 창을 닫으려고 할 때 실행중인 프로세스 종료에 대해 경고한다는 것입니다.
vitch


5

짜증나게 이것은 다시 한번 깨졌습니다. 이번에는 버전 1.7.12-1의 git 사람들입니다. 사람들이 완료 기능없이 프롬프트 기능 만 사용할 수 있도록하기 위해 (속도를 늦출 수 있음) bash_completion / git에서 자체 파일 git-prompt.sh로 프롬프트 기능을 리팩토링했습니다.

따라서 @Lara가 설명한대로 bash_completion을 추가하면 완료 만됩니다 (탭을 누르면 태그 / 지점 이름이 완료됩니다).

(가) 얻으려면 __git_ps1그래서 당신은 당신의 PS1 프롬프트에서 사용할 수 있습니다 당신은 또한 당신의 ~ / .profile에에 다음을 추가해야합니다.

. /opt/local/share/doc/git-core/contrib/completion/git-prompt.sh

몇 가지 배경이 있습니다-https: //bbs.archlinux.org/viewtopic.php ? pid=1163632#p1163632



3

또는 Homebrew 와 함께

brew install bash-completion git-extras

2
고마워 그래야합니다 brew install bash-completion git-extras(밑줄 대신 대시).
simonair

2

비슷한 질문 에 대한 해결책을 찾았습니다 .

자식-OSX-설치 와 함께 제공 git-completion.bash하고에 설치합니다 /usr/local/git/contrib/completion/. 에서 해당 파일을 소스 .bash_profile로 가져옵니다 __git_ps1.


2

Mountain Lion 및 Mac-Ports의 경우 .bash_profile에서 다음 줄을 사용하여 __git_ps1과 완료를 정상적으로 실행해야했습니다.

# Bash shell command completion
if [ -f /opt/local/share/doc/git-core/contrib/completion/git-completion.bash ]; then
  . /opt/local/share/doc/git-core/contrib/completion/git-completion.bash
fi

if [ -f /opt/local/share/doc/git-core/contrib/completion/git-prompt.sh ]; then
  . /opt/local/share/doc/git-core/contrib/completion/git-prompt.sh
fi

1

brew를 사용하므로 bash_completion모든 스크립트를 실행 하는 마스터 스크립트 bash_completion.d가 제공되지 않는 것 같습니다. 다른 패키지가 다른 완료 스크립트를 추가하고 모두 실행하기를 원하기 때문에 단일 스크립트를 실행하여 git 완료를 추가하도록 제안하는 솔루션은 확장 할 수 없습니다. 따라서 나는 이것을 (Linux Linux에서 적응) 끝에 추가했습니다 /etc/bashrc:

# source compat completion directory definitions
BASH_COMPLETION_COMPAT_DIR=/usr/local/etc/bash_completion.d
if [[ -d $BASH_COMPLETION_COMPAT_DIR && -r $BASH_COMPLETION_COMPAT_DIR && \
    -x $BASH_COMPLETION_COMPAT_DIR ]]; then
    for i in $(LC_ALL=C command ls "$BASH_COMPLETION_COMPAT_DIR"); do
        i=$BASH_COMPLETION_COMPAT_DIR/$i
        [[ -f $i && -r $i ]] && . "$i"
    done
fi

1

적어도 Xcode 6에서는 이미 있습니다 git-completion.bash. Xcode 앱 번들 안에 있습니다.

이것을 .bashrc에 추가하십시오.

source `xcode-select -p`/usr/share/git-core/git-completion.bash

이것은 실제로 나를 위해 일한 유일한 대답이었습니다. 다음과 같은 불완전한 명령을 입력하면 다른 답변에서 이상한 오류가 발생했습니다.git br<TAB>
r00m

0

Adam K. Johnson의 게시물 외에도

다음을 넣을 수도 있습니다 ...

# MacPorts Bash shell command completion
if [ -f /opt/local/etc/bash_completion ]; then
    . /opt/local/etc/bash_completion
fi

... 원한다면 / etc / profile에서.

이렇게하면 시스템의 모든 사용자는 "/opt/local/etc/bash_completion.d/"디렉토리에 설치된 모든 bash 완료 스크립트를 활용할 수 있습니다.


0

2011 년 grundprinzip의 위의 답변은 여전히 ​​잘 작동하지만 이제는 더 쉽게 할 수 있는 Homebrew 패키지 bash-completion ( formula , repo )이 있으므로 최근 답변을 추가하고 싶었습니다 . (여기에는 git 및 기타 일반적인 도구에 대한 완료가 포함됩니다.)

현재 macOS는 Bash 3과 함께 제공되지만 brew install bashBash 4를 얻을 수 있습니다. Bash 4를 실행중인 경우 bash-completion의 최신 2.x 분기를 설치하십시오.

배쉬 4

  1. 운영:

    brew install bash-completion@2
  2. 추가 ~/.bash_profile:

    if [ -f /usr/local/share/bash-completion/bash_completion ]; then
      . /usr/local/share/bash-completion/bash_completion
    fi

배쉬 3

macOS에서 스톡 bash 3.x를 고수하려면 대신 다음 지침을 따르십시오.

  1. 운영:

    brew install bash-completion
  2. 추가 ~/.bash_profile:

    echo "[ -f /usr/local/etc/bash_completion ] && . /usr/local/etc/bash_completion" >> ~/.bash_profile

참조 : http://davidalger.com/development/bash-completion-on-os-x-with-brew/


-2

나는 당신이 login에 파일을 소싱하는 것을 잊어 버릴 것이라고 생각 .bashrc한다.

. ./path/to/your/file.ext

.뒤에 공백을 사용 하면 현재 컨텍스트에서 파일이 실행됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.