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

関連情報