令许多用户沮丧的是,他们发现 UNIX 最初是在电传打字机上开发出来,这种打字机并不包含退格操作。因此,编辑输入数据的过程必须通过打印字符来执行:# 表示删除一个字符;@ 表示删除一行。中断定义为 Rubout (ASCII DEL)。这种状况一直延续至登录系统的过程。现在,#、@ 和 DEL 仍是 HP-UX 的缺省登录控制字符。
只要用户登录后,他们就可以克服这种不便,可以将 stty 命令包含于其 .profile 和 .login 脚本中,将 DEL、# 和 @ 分别更改为常用控制字符,例如 ETX (Ctrl-C)、backspace (Ctrl-H) 和 NAK (Ctrl-U)。
可以更改诸如 getty、rlogin、ssh 和 telnet 等程序所使用的登录控制字符。为此,请使用 stty 在名为 /dev/ttyconf 的专用设备文件上设置所需参数。有关详细信息,请参阅 stty(1)。
/dev/ttyconf 文件提供了一种方式,可以更改所有用户的所有登录的缺省行为。/dev/ttyconf 代表终端设备,并维护可通过 stty 显示的所有终端控制字符集。将该文件作为输入传递给 stty 命令,即可查看和修改任何终端设备文件的参数。
重新引导系统时,/dev/ttyconf 的内容将重置为缺省值,如以下带 -a 选项的 stty 显示的那样:
# stty -a < /dev/ttyconf
min = 4; time = 0;
intr = DEL; quit = ^\; erase = #; kill = @
eof = ^D; eol = ^@; eol2 <undef>; swtch <undef>
stop = ^S; start = ^Q; susp <undef>; dsusp <undef>
werase <undef>; lnext <undef> |
要更改任意所显示的参数,请执行带有相应选项的 stty。例如,分别将 intr、erase 和 kill 的系统缺省值更改为 Ctrl-C、Ctrl-H 和 Ctrl-U,请输入以下命令:
# stty intr ^C erase ^H kill ^U < /dev/ttyconf |
如果仅查看缺省值的不同形式,请输入不带任何选项的 stty:
# stty < /dev/ttyconf
intr = ^C; erase = ^H; kill = ^U;
swtch <undef>; |
与其他登录命令不同,getty 命令不自动使用 /dev/ttyconf;它要求使用 -f 选项。在 /etc/inittab 文件中,将 -f 选项添加到每个 getty 命令中。下次重新打开终端设备时,getty 将使用新设置。为了重置系统控制台,必须重新引导系统。有关详细信息,请参阅 getty(1M)。
要在每次系统引导时设置 /dev/ttyconf,请将 stty 命令添加到 /etc/inittab 中。如果将该命令置于控制台的 getty 命令之前,则控制台也将使用修改后的控制字符:
例如,将
cons:123456:respawn:/usr/sbin/getty console console # system console
ttp1:234:respawn:/usr/sbin/getty -h tty0p1 9600 |
更改为:
ttco::bootwait:/sbin/stty intr ^C erase ^H kill ^U < /dev/ttyconf
cons:123456:respawn:/usr/sbin/getty -f console console # system console
ttp1:234:respawn:/usr/sbin/getty -f -h tty0p1 9600 |