背景
首先ranger是正常安装,正常环境下也是可以正常使用的。当我在tmux中使用ssh远程,然后使用ssh远程的机器中的ranger,就发现ranger打开报错了。
嵌套层级:
tmux →ssh→ranger
报错信息
# ranger
[13:37:03]
ranger version: ranger 1.9.3
Python version: 3.6.8 (default, Nov 16 2020, 16:55:22) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]
Locale: zh_CN.UTF-8
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/ranger/core/main.py", line 171, in main
fm.initialize()
File "/usr/local/lib/python3.6/site-packages/ranger/core/fm.py", line 132, in initialize
self.ui.initialize()
File "/usr/local/lib/python3.6/site-packages/ranger/gui/ui.py", line 127, in initialize
self.handle_multiplexer()
File "/usr/local/lib/python3.6/site-packages/ranger/gui/ui.py", line 500, in handle_multiplexer
['screen', '-Q', 'title']).strip()
File "/usr/local/lib/python3.6/site-packages/ranger/ext/spawn.py", line 35, in check_output
process = Popen(popenargs, stderr=fd_devnull, **kwargs)
File "/usr/lib64/python3.6/subprocess.py", line 729, in __init__
restore_signals, start_new_session)
File "/usr/lib64/python3.6/subprocess.py", line 1364, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] 没有那个文件或目录: 'screen': 'screen'
ranger crashed. Please report this traceback at:
https://github.com/ranger/ranger/issues
解决过程
我本来并没有打算解决这个问题,既然tmux ssh远程无法使用的话,好我就不在tmux中ssh中使用ranger就是了。
后来发我现,在此环境下的nvim中既然可以正常使用。也就是嵌套的层级更多了,反而可以使用了。
tmux → ssh→neovim→ranger
这样就激起了我的好奇心。看来这个问题是可以解决的。
对比了一下环境变量的不同,后来发现是因$TERM
变量的值不同导致的。
检查$TERM
变量的值
tmux中我的执行结果如下:
# echo $TERM
screen-256color
不在tmux中的值是:
echo $TERM
xterm-256color
这样就发现了两者的区别了。
解决方法
运行ranger之前执行以下语句:
export TERM=xterm-256color
然后在运行ranger就可以正常打开了。
参考文献
https://github.com/ranger/ranger/issues/1805