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

1 ruby unix shell virtual ncurses

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

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

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

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

Ale*_*der 5

您可以通过将TERM环境变量设置为正确的值来声明shell具有的功能.例如,如果您的shell具有与vt100终端相同的功能,则将TERM导出到正确的值,而像vim这样的程序将尊重它.

要在vt100模式下运行vim,请尝试:

TERM=vt100 vim
Run Code Online (Sandbox Code Playgroud)

你也可以尝试:

export TERM=dumb
Run Code Online (Sandbox Code Playgroud)

诀窍是找到一个与您正在创建的功能相对应的终端.有很多可供选择.在我的系统(Arch Linux)上,这给了我很多选择:

find /usr/share/terminfo
Run Code Online (Sandbox Code Playgroud)

您可能能够找到与程序可以处理的内容相对应的终端规范.

或者,您可能需要考虑为ansi或vt100实现终端仿真:

http://en.wikipedia.org/wiki/ANSI_escape_code

http://www.termsys.demon.co.uk/vtansi.htm

祝你好运!