태그 보관물: fish

fish

$ PATH는 나를 미치게한다 시도 terminal.app- bash, fish, sh.

좋아, 이것이 멍청한 일이라면 사과하지만 아이디어가 부족합니다.

목표 : 앞에 추가 /usr/local/bin$PATH

문제 : $PATH 내가 원하는 것을하지 않거나 기대하지 않습니다

내가 여기에 어떻게 왔는가 : 나는 프로그램을 배우기 시작하고 싶었다. 그래서 나는 곤경에 빠지는 것을 편안하게 느끼고 있지만 많은 경험이 없다. fish친숙하기 때문에 쉘을 설치하고 homebrew기본 쉘 ( system prefs>users & groups>advanced) 로 설정했습니다 . 어느 시점에서 brew doctor설치가 모두 정결 한지 확인하기 위해 시스템 복사본 대신 설치를 사용할 수 있도록 /usr/local/bin전면으로 이동 하는 것이 좋습니다 . 파인 -하지만 사이 와 , 뭔가가 일어나고 그 것은 내 컨트롤 밖으로이었고, 나는 경로가 올바른 방법으로 배열 얻을 수 없었다.$PATHgitpath_helperfish$PATH

환경 : OSX 10.8.2, 10.7ish에서 업그레이드, xcode및 devtools가 설치되어 x11있고 homebrew, 및fish

자세한 정보는 : 나는 내 사용자의 기본 쉘 등을 설정 한 bash과를 통해 쉘의 다양한 시도 terminal.appbash, 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에게 감사드립니다. 후손을 위해 내가 알아 낸 것은 다음과 같습니다.

  1. path_helper/etc/profile구문 eval '/usr/libexec/path_helper -s'(아포스트로피가 실제로 백틱 인 경우)에 의해 에서 호출됩니다 . 더미처럼, 나는 백틱이 어떻게 작동하는지 알지 못했고 어떤 이유로 따옴표로 바꿨습니다. 이로 profile인해 로딩 이 중단 되었습니다 path_helper. 백 틱을 교체했으며 이제는 물론 작동합니다.
  2. set PATH /usr/local/bin $PATH내에서 사용 ~/.config/fish/profile.fish하면 선호하는 쉘에서 올바른 순서를 얻을 수 있지만 path_helper작동하는 한 중복 될 수 있습니다.
  3. 전체가 보장을 위해 $PATH등 스크립트 GUI 애플리케이션에 사용할 수 있습니다, 사이-던져 것으로 보인다 launchd.conf그리고 environment.plist아직도 그 일을 연구 ….

답변