여러 개의 GOPATH 를 손 쉽게 관리 할 수 있 습 니 다.

1931 단어 linuxshellgolang
Herbert Fischer 번역자: xcshuan
보통 내 기계 에는 GOPATH 가 하나 밖 에 없 는데 이것 도 대부분의 Gophers 가 추천 하 는 방안 이다.그러나 같은 의존 관 계 를 가 진 서로 다른 버 전의 프로젝트 를 처리 하고 정확하게 업데이트 해 야 할 때 도 있다.우 리 는 단지 일 하고 있 는 물건 을 파괴 하거나 그것들 을 엉망 으로 만 들 고 싶 지 않 을 뿐이다.
빠 른 해결 방안 은 GOPATH 를 다른 곳 으로 가리 키 는 것 이지 만 우리 가 할 항목 을 교환 할 때마다 다시 변경 해 야 합 니 다.
그래서 나 는 방금 bash 를 사용 하 는 명령 행 에서 사용 할 수 있 고 다른 셸 에 도 적용 할 수 있 는 간단 한 해결 방안 을 생각해 냈 다.나 는 VIM 사용자 이기 때문에 이 방안 은 매우 잘 일한다.그러나 저 는 이런 방법 을 Sublime Text 나 다른 어떤 방법 으로 도 GOPATH 의 IDE 를 설정 하 는 것 을 추천 하지 않 습 니 다.편집기/IDE 를 매번 같은 명령 행 셸 에서 불 러 오지 않 는 한 이 IDE 는 GOPATH 를 설정 하지 않 아 도 됩 니 다. 그렇지 않 으 면 이 프로젝트 는 작 동 하지 않 습 니 다.
해결 방법 은 간단 하 다.~/. bashrc (또는 ~/. bash profile) 에 다음 코드 세 션 을 포함 하고 source ~/. bashrc 로 프로필 을 다시 불 러 오 면 됩 니 다.이 세 션 은 셸 함 수 를 만 들 것 입 니 다. 이 함 수 는 내 장 된 명령 cd 를 맞 춤 형 명령 cd 로 덮어 쓰 고 있 는 디 렉 터 리 를 맞 춤 형 명령 cd 로 스 캔 하 며 상위 디 렉 터 리 를 스 캔 하여 'gopath' 라 는 파일 을 찾 습 니 다.
cd () {
    builtin cd "$@"
    cdir=$PWD
    while [ "$cdir" != "/" ]; do
        if [ -e "$cdir/.gopath" ]; then
            export GOPATH=$cdir
            break
        fi
        cdir=$(dirname "$cdir")
    done
}

이 디 렉 터 리 에 들 어 갈 때마다 새로 정 의 된 cd 함 수 는 현재 환경의 GOPATH 를 이 디 렉 터 리 로 설정 합 니 다.
예 를 들 어 두 개의 디 렉 터 리 A 와 B 를 만 들 고 각각 하나의 하위 디 렉 터 리 src 를 가지 고 해결 방안 을 충분히 설명 합 니 다.
$ go env GOPATH
/home/user/Go

$ mkdir -p ~/A/src && touch ~/A/.gopath
$ mkdir -p ~/B/src && touch ~/B/.gopath

$ cd ~/A/src
$ go env GOPATH
/home/user/A

$ cd ~/B/src
$ go env GOPATH
/home/user/B

괜 찮 습 니 다. 하지만 저 는 지금 원래 의 GOPATH 를 원 합 니 다.
$ cd /home/user/Go
$ go env GOPATH
/home/user/B

emmmm, 우 리 는 여기에 'gopath' 를 만들어 야 합 니 다.
$ touch /home/user/Go/.gopath
$ cd .
$ go env GOPATH
/home/user/Go

전혀 문제 가 없습니다. 외부 의존 이 필요 없 는 간단 한 GOPATH 관리 방안 이 등장 합 니 다.

좋은 웹페이지 즐겨찾기