嘿那里,我正在构建一个远程shell服务器,它在纯文本客户端和虚拟shell之间进行连接。
使用常规shell命令时效果非常好,但人们在尝试之后首先尝试的是vim,它会立即使我的服务器疯狂,甚至无法远程关闭。
有没有办法检测基于ncurses的程序并防止它们在我的特殊shell中运行?
(服务器是ruby,但任何系统命令都可以)
答案 0 :(得分:5)
您可以通过将TERM环境变量设置为正确的值来声明shell具有的功能。例如,如果你的shell具有与vt100终端相同的功能,则将TERM导出到正确的值,而像vim这样的程序将尊重它。
要在vt100模式下运行vim,请尝试:
TERM=vt100 vim
您也可以尝试:
export TERM=dumb
诀窍是找到一个与您正在创建的功能相对应的终端。有很多可供选择。在我的系统(Arch Linux)上,这给了我很多选择:
find /usr/share/terminfo
您可能能够找到与您的程序可以处理的内容相对应的终端规范。
或者,您可能需要考虑为ansi或vt100实施终端仿真:
http://en.wikipedia.org/wiki/ANSI_escape_code
http://www.termsys.demon.co.uk/vtansi.htm
祝你好运!