有没有办法阻止基于ncurses的程序运行?

时间:2011-05-31 14:14:54

标签: ruby shell unix virtual ncurses

嘿那里,我正在构建一个远程shell服务器,它在纯文本客户端和虚拟shell之间进行连接。

使用常规shell命令时效果非常好,但人们在尝试之后首先尝试的是vim,它会立即使我的服务器疯狂,甚至无法远程关闭。

有没有办法检测基于ncurses的程序并防止它们在我的特殊shell中运行?

(服务器是ruby,但任何系统命令都可以)

1 个答案:

答案 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

祝你好运!