레인저에서는 클릭하여 S
포탄에 뛰어들었다가 ctrl+D
레인저로 돌아갈 수 있습니다.
한동안 쉘에 있었다가 레인저로 점프하고 싶을 때 일반 쉘을 쳐야 할지, ranger
이미 레인저를 통해 쉘에 들어와 있다면 그걸 쳐야 할지 잘 모르겠습니다. ctrl+D
.
실수하면 ctrl+D
터미널이 닫힙니다. 잘못 사용하면 ranger
Ranger 내에 Ranger 인스턴스가 중첩됩니다.
이미 레인저 셸에 있는지 확인하는 방법이 있나요?
명령이 있는 경우 rangerp
셸에 있으면 "True"로 별칭을 지정하고 그렇지 않으면 "False"로 별칭을 지정할 수 있습니다.
답변1
Ranger가 셸을 생성할 때마다 환경 변수가 증가합니다 RANGER_LEVEL
.
$ echo $RANGER_LEVEL
$ ranger # Open Ranger and enter a nested shell
$ echo $RANGER_LEVEL
1
$ ranger # Do the same thing from the nested shell
$ echo $RANGER_LEVEL
2
요청한 명령에 대해 다음을 수행할 수 있습니다.
alias inranger="[ $RANGER_LEVEL ] && echo True || echo False"
이 명령을 실행하는 데 시간을 낭비하고 싶지 않거나 실행하는 것을 잊지 않으려면 셸의 RC 파일을 편집하여 프롬프트에 필요한 정보를 추가할 수 있습니다.
if [ -n "$RANGER_LEVEL" ]; then
export PS1="[r$RANGER_LEVEL]$PS1";
fi
그게 다야:
$ ranger # Open Ranger and drop into a shell
[r1]$ ranger # One more time
[r2]$ # ...
답변2
상위 프로세스 pid를 보면 도움이 될 수 있습니다.
[root@centos8 ranger-1.9.3]# ps -fp $PPID
UID PID PPID C STIME TTY TIME CMD
root 3240 3214 0 08:03 pts/1 00:00:00 /usr/bin/python3 -O /usr/local/bin/ranger
[root@centos8 ranger-1.9.3]#
그러니 시도해 보세요
ps -fp $PPID | grep -q ranger && echo True || echo False
답변3
생선 껍질로 수리하기
파일 만들기~/.config/fish/functions/ranger.fish다음 콘텐츠가 포함되어 있습니다:
function ranger --description 'Simple, vim-like file manager'
if test -n "$RANGER_LEVEL"
exit
else
command ranger $argv
end
end