ranger
새 터미널 창을 열고 그 안에서 프로그램을 여는 일반적인 작업에 대한 키 바인딩을 만들고 싶습니다 .
분명한 명령은 다음과 같습니다.
urxvt -e ranger
중요한 것은 상자에서 꺼내자마자 바로 작동합니다. 그런데 ranger
이라는 다른 프로그램을 사용하려고 하는데 fzf
해당 프로그램을 찾을 수 없습니다. 에러 메시지 zsh:1: command not found: fzf
.
결과는 다음과 같습니다.
urxvt -e zsh -c ranger
이미 터미널을 열어서 호출하면 ranger
문제 fzf
없이 작동합니다.
살펴보니 바이너리에 대한 경로가 내 경로 fzf
에 추가되었습니다 . 따라서 내 가정은 이것이 결코 나를 소스로 삼지 않으며 경로에 추가되지 않는다는 것입니다.$PATH
.zshrc
.zshrc
이 문제에 대한 확실한 해결책이 있습니다( fzf
내부 경로를 호출하려면 전체 경로 사용). 그러나 이 문제는 저를 몇 번 괴롭혔으며 좋은 해결책을 원합니다.ranger
~/.fzf/bin/fzf
.zshrc
프로그램을 다운로드하고 열려면 어떻게 새 터미널을 열 수 있나요 ranger
?
내가 이해하지 못하는 또 다른 관찰은 다음과 같습니다.
스크립트를 만들었습니다 myranger.sh
.
#!/usr/bin/zsh
source ~/.zshrc
ranger
그리고 다음 명령을 사용하여 새 터미널을 만듭니다.
urxvt -e myranger.sh
Ranger가 있는 터미널이 열리지만 fzf
여전히 $PATH
. 내가 여기서 무엇을 놓치고 있는 걸까요?
그건 그렇고, 이것은 구체적 zsh
이지 않거나 urxvt
구체적이지 않습니다. 나는 또한 bash
이것을 and/or 로 테스트 했습니다 gnome-terminal
.
답변1
urxvt -e zsh -c ranger
거의 동일합니다 urxvt -e ranger
. urxvt에 zsh를 실행하라고 지시한 다음 zsh가 ranger를 실행하면 그게 전부입니다. urxvt -e zsh -c ranger
로드하지 마세요 .zshrc
: zsh는 시작 시에만 로드합니다.인터렉티브쉘, 즉 스크립트를 실행하기 위해 쉘이 시작될 때(스크립트가 파일에 있거나 명령줄을 통해 전달되었는지 여부 -c
)가 아니라 사용자 명령을 읽는 쉘입니다.
.zshrc
명시적으로 로드 할 수 있습니다 ( urxvt -e zsh -c '. ~/.zshrc; ranger'
또는 이전처럼 래퍼 스크립트를 사용할 수 있습니다). 그러나 .zshrc
이는 zsh의 대화형 설정(키 바인딩, 별칭 등)을 위한 것이기 때문에 좋은 생각이 아닙니다. 환경변수 설정(예: PATH)은 모든 프로그램에 적용되므로 로그인 시 설정해야 하며,일반적으로~/.profile
. PATH 설정을 해당 위치로 이동 .zshrc
하세요 .profile
.
답변2
매뉴얼 zsh
인용 :
부르다
-i는 쉘 상호작용을 강제합니다.
그 다음에
쉘이 로그인 쉘인 경우 에서 명령을 읽은
/etc/zprofile
다음 명령을 읽습니다$ZDOTDIR/.zprofile
. 그런 다음 셸이 대화형이면/etc/zshrc
및 에서 명령을 읽습니다$ZDOTDIR/.zshrc
. 마지막으로 쉘이 로그인 쉘이라면 를/etc/zlogin
읽어보세요$ZDOTDIR/.zlogin
....
ZDOTDIR
설정하지 않으면 사용HOME
됩니다.
따라서 .zshrc
실행 초기에 강제 구매를 하기 위해서는
urxvt -e zsh -ci ranger