좋아, 이것이 멍청한 일이라면 사과하지만 아이디어가 부족합니다.
목표 : 앞에 추가 /usr/local/bin
로$PATH
문제 : $PATH
내가 원하는 것을하지 않거나 기대하지 않습니다
내가 여기에 어떻게 왔는가 : 나는 프로그램을 배우기 시작하고 싶었다. 그래서 나는 곤경에 빠지는 것을 편안하게 느끼고 있지만 많은 경험이 없다. fish
친숙하기 때문에 쉘을 설치하고 homebrew
기본 쉘 ( system prefs>users & groups>advanced
) 로 설정했습니다 . 어느 시점에서 brew doctor
설치가 모두 정결 한지 확인하기 위해 시스템 복사본 대신 설치를 사용할 수 있도록 /usr/local/bin
전면으로 이동 하는 것이 좋습니다 . 파인 -하지만 사이 와 , 뭔가가 일어나고 그 것은 내 컨트롤 밖으로이었고, 나는 경로가 올바른 방법으로 배열 얻을 수 없었다.$PATH
git
path_helper
fish
$PATH
환경 : OSX 10.8.2, 10.7ish에서 업그레이드, xcode
및 devtools가 설치되어 x11
있고 homebrew
, 및fish
자세한 정보는 : 나는 내 사용자의 기본 쉘 등을 설정 한 bash
과를 통해 쉘의 다양한 시도 terminal.app
– bash
, fish
, sh
. 나는 /usr/local/bin
맨 위로 이동 /etc/paths
했지만 아무것도 변경되지 않았습니다. 나는 다양한 config.fish
파일을 살펴보고 $ PATH로 엉망이되는 물건을 주석 처리했지만 도움이되지 않았습니다. 다음 파일이 있습니다 /etc/paths.d/
.
./10-homebrew
포함 /usr/local/bin
./20-fish
포함 /usr/local/Cellar/fish/1.23.1/bin
./40-XQuartz
포함 /opt/X11/bin
나는 내에 추가 set +x
했고 profile
내가 시작할 때 terminal.app
나는 얻는다 :
Last login: Mon Oct 1 13:31:06 on ttys000
+ '[' -x /usr/libexec/path_helper ']'
+ eval '/usr/libexec/path_helper -s'
++ /usr/libexec/path_helper -s PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/Cellar/fish/1.23.1/bin:/opt/X11/bin";
export PATH;
+ '[' /bin/bash '!=' no ']'
+ '[' -r /etc/bashrc ']'
+ . /etc/bashrc
++ '[' -z '\s-\v\$ ' ']'
++ PS1='\h:\W \u\$ '
++ shopt -s checkwinsize
++ '[' Apple_Terminal == Apple_Terminal ']'
++ '[' -z '' ']'
++ PROMPT_COMMAND='update_terminal_cwd; '
++ update_terminal_cwd
++ local 'SEARCH= '
++ local REPLACE=%20
++ local PWD_URL=file://Chriss-iMac.local/Users/c4
++ printf '\e]7;%s\a' file://Chriss-iMac.local/Users/c4
Chriss-iMac:~ c4$
이 path_helper 실행처럼 보이는 그래서,하지만 실행 echo $PATH
그물 나 /usr/bin:/bin:/usr/sbin:/sbin
. 그래서 path_helper
더 이상해야 할 일을하지 않는 것 같아요 ?
여기에 내가 이해하지 못하는 잘 정의 된 동작이 있거나 확실하지 않은 문제가 있다고 확신합니다. 도와주세요!
답변
해결책:
시스템 전체 설정 또는 사용자 구성을 원하는지 선택하고 적절한 구성 파일을 편집하려면 fish와 함께 path_helper를 사용하지 마십시오.
더
fish는 / etc / profile을 제공하지 않으며, 시스템 전체 및 사용자 구성의 경우 각각 /etc/fish/config.fish 및 ~ / .config / fish / config.fish를 읽습니다 [1].
path_helper는 시스템 전체 프로필 파일 (sh, csh 및 해당 파생 파일)을 제공하는 쉘에 사용하기위한 것입니다. 10.7 이후 path_helper는 / etc / paths의 순서를 따르는 것으로 보이지만 AFAIR는 10.6에 없었으며 이에 대처하기가 더 어려웠습니다.
실제로 fish와 함께 path_helper를 사용하려면 -s 및 -c 옵션 과 함께 sh 및 csh 구문 만 제공하므로 출력을 구문 분석해야합니다 .
같은 것
/usr/libexec/path_helper -c | sed -e 's/setenv/set -x/' -e 's/:/ /g' -e 's/[";]//g'
일을해야합니다 :
[1] http://ridiculousfish.com/shell/user_doc/html/index.html#initialization
답변
나는 /etc/paths.d, path_helper, & c.에 대해 전혀 모른다. 모두 나에게 과도한 합병증처럼 보이지만 ~ / .bashrc의 끝에서 다음과 같이하면된다.
PATH=/usr/local/bin:$PATH
도움이 되었기를 바랍니다!
답변
응답하고 스택 교환 사이트에서 다른 유사한 질문에 답변 한 모든 사람들에게 Aaron에게 감사드립니다. 후손을 위해 내가 알아 낸 것은 다음과 같습니다.
path_helper
는/etc/profile
구문eval '/usr/libexec/path_helper -s'
(아포스트로피가 실제로 백틱 인 경우)에 의해 에서 호출됩니다 . 더미처럼, 나는 백틱이 어떻게 작동하는지 알지 못했고 어떤 이유로 따옴표로 바꿨습니다. 이로profile
인해 로딩 이 중단 되었습니다path_helper
. 백 틱을 교체했으며 이제는 물론 작동합니다.set PATH /usr/local/bin $PATH
내에서 사용~/.config/fish/profile.fish
하면 선호하는 쉘에서 올바른 순서를 얻을 수 있지만path_helper
작동하는 한 중복 될 수 있습니다.- 전체가 보장을 위해
$PATH
등 스크립트 GUI 애플리케이션에 사용할 수 있습니다, 사이-던져 것으로 보인다launchd.conf
그리고environment.plist
아직도 그 일을 연구 ….