OS X의 경로에서 / usr / bin 전에 / usr / local / bin을 갖는 데 문제가 있습니까?
기본적으로 OS X 10.6은 /usr/libexec/path_helper파일에 나열된 다음 경로를 추가하는 데 사용 합니다 /etc/paths.
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
이것은 그것이 경로에 /usr/bin앞서 온다는 것을 의미합니다 /usr/local/bin. 이로 인해 Homebrew가 .NET에 설치 한 버전 대신 Xcode 4 에서 설치 한 git 버전 /usr/bin이 호출됩니다 /usr/local/bin.
내 질문으로 이끄는 것은 경로에 /usr/local/bin앞서 왔는데 문제가 /usr/bin있습니까? Apple이 기본적으로 /usr/bin이전에 왔던 특별한 이유가 /usr/local/bin있습니까?
/usr/bin및 순서 변경 방법/usr/local/bin
/usr/local/bin파일 하단 /etc/paths에서 상단 으로 이동하는 것이 문제 입니까? 그렇게하면 /usr/libexec/path_helper다른 리소스에서 사용할 수 있기 때문에 터미널을 시작할 때뿐만 아니라 경로에 영향을 미칩니다 (나는 이것에 대해 확실하지 않습니다).
나를 추가 할 중복 있지만, 그것은 안전한 것 같습니다 /usr/local/bin의 경로로 ~/.bash_profile그 의미, /usr/local/bin두 번 경로에있을 것입니다.
아니, 아니. 그들은 단지 이상합니다 ... 정의에 따라 지역은 재정의해야합니다.
나는 같은 문제로 어려움을 겪었고 인터넷 검색에서 아래 링크를 찾았습니다.
https://discussions.apple.com/thread/3588837?start=0&tstart=0
그들은 / etc / paths 를 수정 하는 것은 보안상의 이유로 좋은 생각이 아니라고 말했습니다 .
위의 모든 것이 유용하다는 것을 알았습니다. 특히 @Ohgyun Ahn의 경고입니다. 그래서 나는 방금 구현 한 타협을 제안합니다.
/etc/paths또는 /private/etc/paths(OS X 10.8에서와 같이) 편집 하고 git 단독으로 재정의하십시오 . 이는 실제로 시스템 전체 경로를 확인하는 모든 프로그램에서 사용하기 위해 최신 git을 구현하는 동안 모든 보안 영향 (어쨌든 git과 관련이 없음)을 피합니다.
- 예를 들어 재정의에 사용할 새 디렉터리를 만듭니다.
/usr/local/git-override/ - git-override에서 homebrew의 git 프로그램으로 새 심볼릭 링크를 만듭니다. 에서 git 심볼릭 링크를 다시 만드십시오
/usr/local/bin. /usr/local/git-override의 상단에 추가하십시오(/private)/etc/paths.
다른 사람에게 도움이되기를 바랍니다.
PATH를 깨끗하게 유지하려면 (중복 항목 없음) .bash_profile에 다음을 추가하여 원하는 효과를 얻을 수 있습니다.
# remove /usr/local/bin and /usr/bin
export PATH=`echo ":$PATH:" | sed -e "s#:/usr/local/bin:#:#g" -e "s/^://" -e "s/:$//"`
export PATH=`echo ":$PATH:" | sed -e "s#:/usr/bin:#:#g" -e "s/^://" -e "s/:$//"`
# add /usr/local/bin and /usr/bin in that order
export PATH="/usr/local/bin:/usr/bin:$PATH"
나는 http://ntk.me/2013/05/04/path-environment-variable/ 에서 그 작은 트릭을 배웠습니다.
편집 : 매우 중요합니다! 그것들이 잘못 제거되는 순서를 얻지 마십시오! 그렇게 sed하면 작동하지 않으며 /usr/local/bin:/usr/bin:PATH로 남겨집니다 !
이로 인해 일부 보안 문제가 발생할 수 있다고 제안하는 다른 사람들이 옳다는 점도 주목할 가치가 있습니다. 관련된 위험을 이해하십시오!
/etc/paths시스템 안정성과 보안을 위해 이음새 순서를 수정 한 이후 ... @vmrob의 답변을 기반으로 한 내 솔루션
read PATH < <(echo "$PATH" | sed \
-e 's/^/:/' -e 's/$/:/' \
-e 's_:/usr/local/bin:_:_g' \
-e 's_:/usr/local/sbin:_:_g' \
-e "s_:/usr/bin:/bin:_:$HOME/bin:/usr/local/bin:/usr/bin:/bin:_" \
-e "s_:/usr/sbin:/sbin:_:$HOME/sbin:/usr/local/sbin:/usr/sbin:/sbin:_" \
-e 's/^://' -e 's/:$//')
export PATH
'Nice programing' 카테고리의 다른 글
| 영화 상영 시간 API가 있나요? (0) | 2020.11.02 |
|---|---|
| HashMap.clear ()에서 Arrays.fill ()이 더 이상 사용되지 않는 이유는 무엇입니까? (0) | 2020.11.02 |
| 완전한 Cocos2d-x 튜토리얼 및 가이드 목록 (0) | 2020.11.02 |
| 스크롤 이벤트가 사용자에 의해 생성되었는지 감지 (0) | 2020.11.02 |
| 퍼블릭 API의 리소스에 UUID를 사용해야합니까? (0) | 2020.11.02 |