Vim의 $ PATH가 터미널과 일치하지 않습니다


10

MacVim을 사용하고 있으며 터미널 ( mvim) 에서 실행 하지 않으면 $ PATH에 .bash_profile에 설정 한 내용이 포함되지 않습니다. 기본값 만있는 것 같습니다 /usr/bin:/bin:/usr/sbin:/sbin.

OS X 10.5.8을 실행하고 있습니다. .vimrc에서 수동으로 설정할 수 있다고해도 괜찮을지 만 터미널과 같은 곳에서 가져 오는 것이 좋습니다. 나는 한 사이트가 제안한 것을 따르려고 노력했지만 let $PATH += /blah/foo:/bar/etc아무 소용이 없었습니다.

편집 / 솔루션 : 아래 내 답변을 참조하십시오. MacVim에는이 문제를 해결할 수있는 옵션이 있습니다.


답변:


12

MacVim 은 일반 사용자의 사용자 정의 도트 파일을 무시하는 방식으로 $ PATH를 받고있는 것으로 보입니다.

나는 그들이 이런 식으로 그것을 선호 하는지 말할 수는 없지만 사실입니다. 환경 설정 (고급 탭 아래)에서 "로그인 쉘에서 Vim 프로세스 실행"을 선택할 수 있지만 $PATH약간만 향상됩니다 .

MacVim은 파일 /usr/libexec/path_helper에서 (1) 찾은 항목 /etc/paths과 (2) /etc/paths.d/디렉토리 에서 찾은 추가 항목을 사용합니다 . 사용자의 홈 디렉토리에서 변경 한 내용 .profile은 무시됩니다.

간단히 말해서 OSX 기본값과에 추가되는 모든 응용 프로그램이 제공됩니다 /etc/paths.d. (예를 들어, MacTex는 내 시스템에서 그렇게합니다.) 따라서 MacVim 경로를 조정하려면 항목이있는 파일을에 추가하십시오 /etc/paths.d. ( /etc/paths시스템 업데이트로 인해 변경 사항이 취소 될 위험이 있기 때문에 직접 편집하지는 않습니다 .)

알려 주셔서 감사합니다. MacVim에 위시리스트 버그를 신고하려고합니다.


나는 그것을 생각했을 것입니다. 그러나 터미널에는 나타나지만 MacVim에는없는 '/etc/paths.d/'를 추가했습니다.
도넛

그리고 실제로, '/ etc / paths'파일에는 MacVim의 경로보다 더 많은 것이 있습니다.
도넛

@ 도넛 : 글쎄, 그건 이상하다. 내 컴퓨터에서에 무언가를 추가 /etc/paths.d하면 다음에 MacVim을 부팅 할 때 나타납니다. 거기에 어떤 형식을 넣습니까? 각 줄마다 $ PATH 디렉토리가있는 줄당 하나의 항목이어야합니다 (예 : / usr / texbin).
Telemachus

나는 첫 번째 단락을 완전히 놓쳤다. "로그인 쉘에서 Vim 프로세스 시작"을 선택하면 나에게 속임수가 있었다. 내 대답을 참조하십시오.
도넛

7

BTW, "로그인 쉘에서 Vim 프로세스 실행"환경 설정은 MacVim에서 더 이상 사용할 수 없습니다 (최소 v7.3 이상). Finder에서 MacVim을 시작하면 잘못된 경로가 표시되지만 쉘에서 시작하면 ( "mvim") 올바른 경로가 표시됩니다.


3

.bash_profile에서 제공되지는 않지만 .vimrc에서 사용할 수 있습니다.

let $PATH=$PATH . ':/blah/foo'

:이 있어야합니다. 그렇지 않으면 올바른 PATH 변수가 아닙니다.


방금 시도했지만 MacVim의 $ PATH가 변경되지 않는 것 같습니다. 또한 터미널에서 ( /usr/bin/vimApple에서) 그리고 /opt/local/bin/vim(MacPorts에서) Vim으로 테스트했는데, 필요하지 않은 것 같습니다. 터미널에서 Vim은 이미 내 닷 파일에 따라 적절한 $ PATH를 선택합니다.
Telemachus

1
나는 이것을 쓸모없는 것으로 시도했다.
도넛

2

나는 전에 이것을 보지 못했다는 것을 믿을 수 없다. 좋아, 믿을 수있어 어쨌든, MacVim은이를 해결하는 옵션을 제공합니다. 환경 설정에서 "로그인 쉘에서 Vim 프로세스 실행"을 선택하십시오. 그게 다야 작동합니다. 멋진. 바보 야

죄송합니다

나는 Telemachus가 이미 나에게 정답 을 주었다는 것을 깨닫지 못하고 실수로이 답변을 썼다 . 그의 답변으로 표시했습니다.


다행이 분류되어있어
텔레 마커스

1

이 Mac Dev Center 기사 가 유용 할 수 있습니다.


작동하지 않습니다. 뭔가 잘못했을 수 있습니다. 이 기사에서는 ~ / Library / Preferences / org.vim.MacVim.plist라고 가정 한 앱의 '정보 속성 목록 파일'에 'LSEnvironment'속성을 추가 할 것을 제안합니다. 'PATH'( 'path'및 '$ PATH'도 시도)를 키로 사용하고 경로에 문자열 값으로 원하는 것을 사전으로 만들었습니다. 아직도 신비로운 소스에서 PATH를 가져 오는 것 같습니다. plist 파일의 스크린 샷
도넛

1

paths.d 디렉토리에 파일을 추가하는 데 아무런 문제가 없었습니다. mysql이라는 파일을 추가했는데 그 내용은 다음과 같습니다.

/ usr / local / mysql / bin [반환]

그런 다음이 파일을 paths.d 디렉토리에 놓고 소유권을 root : wheel로 변경했습니다. 이제 mysql 디렉토리가 $ PATH 변수에 자동으로 추가됩니다.

완전히 조사하지는 않았지만 (a) 줄 끝에 [RETURN]을 포함하거나 (b) 파일 소유권을 루트로 설정해야 할 수도 있습니다.



1

나는 오늘 이것에 부딪쳤다. MacVim에는 더 이상 "로그인 쉘"옵션이 없으며 사용자 별 설정을 위해 시스템 전체 파일을 편집하는 과정은 간단합니다.

다음은 vim 옵션 만 사용하는 솔루션입니다 ( :help :!및 참조 :help shell).

당신 ~/.vimrc의 라인을 추가

set shell=/bin/bash
set shellcmdflag=-l\ -c

이렇게하면 bash(Mac) Vim에서 기본 셸을 만들고로 -l호출 된 명령에 플래그 (로그인 셸)를 추가합니다 :!{cmd}. 을 실행할 때 :shellbash는 "로그인 쉘이 아닌 대화식 쉘"로 시작됩니다.

하려면 $PATH작업을, 당신은 설정이 필요 ~/.bash_profile에 대한 :!, 그리고 ~/.bashrc위해 :shell. (보기 INVOCATIONman bash)

업데이트 : 이것은 다른 컴퓨터에서 필요하지 않았으므로 근본 원인이 될 수 있습니다.


1
zsh에서도 비슷한 작업을 수행 할 수 있습니다. 에 정의 $PATH하고 또는에 플래그를 .zprofile포함합니다 . -lset shellset shellcmdflag
jladan

0

Mac보다 유닉스에 대해 더 많이 알고 있으므로 다음 조언이 작동하거나 작동하지 않을 수 있습니다. 이 .vimrc 파일을 넣어보십시오 :

! source ~/.bash_profile

그것은 트릭을 할 수도 있지만 약간의 경고가 있습니다. .bash_profile은 한 번만 제공됩니다. 비등 전성 명령이 포함될 수 있습니다 (한 번만 실행해야 함). 지목 사항:

$PATH += /blah/foo:/bar/etc

더 많이 호출 될수록 더 크고 더 많은 중복을 $PATH얻습니다. 그러나 그렇게 큰 문제가 아닌 경우 유닉스에 대한 권장 사항은 일회성 명령을 파일 에 ~/.bashrc넣고 실행 source ~/.bashrc하는 것 .vimrc입니다.


.bash_profile 또는 .bashrc 소싱이 작동하지 않았습니다. 수동으로 실행을 시도했지만 :source .bash_profile파일의 모든 명령에 대해 "편집기 명령 아님"오류가 발생하고 .bashrc와 동일합니다.
도넛

죄송합니다 ... 내 생각은 ... 시도해 볼 수 있습니다! source .bash_profile
David Berger

.bash_profile과 .bashrc를 모두 시도했지만 여전히 갈 수는 없습니다. PATH를 변경하기 위해 .bash_profile에서 사용하는 내용은 다음과 같습니다. 'PATH = / usr / local / bin : /Applications/Espresso.app/Contents/SharedSupport/Tools / : / Applications / MacVim / : $ PATH' .bashrc : 'export PATH = / Applications / MAMP / bin / php5 / bin : $ PATH'. 그리고 실제로 터미널 세션에 영향을 미치는 .bash_profile입니다.
도넛

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