Ranger를 통해 쉘에 있는지 확인하세요.

Ranger를 통해 쉘에 있는지 확인하세요.

레인저에서는 클릭하여 S포탄에 뛰어들었다가 ctrl+D레인저로 돌아갈 수 있습니다.

한동안 쉘에 있었다가 레인저로 점프하고 싶을 때 일반 쉘을 쳐야 할지, ranger이미 레인저를 통해 쉘에 들어와 있다면 그걸 쳐야 할지 잘 모르겠습니다. ctrl+D.

실수하면 ctrl+D터미널이 닫힙니다. 잘못 사용하면 rangerRanger 내에 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]$        # ...

원천:https://github.com/ranger/ranger/issues/1374

답변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

관련 정보