当我 ssh 到我的远程服务器(一台运行 SunOS 5.9 并使用 C-shell 作为默认登录 shell 的 Solaris 计算机)时,我遇到以下问题:
- TERM 变量未定义:我需要手动将此变量设置为 xterm 才能编辑文件,否则我会收到一条不友好的消息:
我不知道你使用的是哪种终端 - 我只有“xterm-256color”。
- 键盘不能被很好地识别:
- 退格键清理完整的命令行缓冲区。我在这里找到了解决方案
- tab 执行一个选项卡,而不是自动完成
- del 键将垃圾放入控制台缓冲区 (^[[)
- 箭头键将垃圾放入控制台缓冲区 (^[) 并插入 A、B、C、D,而不是在 vi 中移动光标。
- 可能更多
我找到了一些使用 stty 命令来修复退格键的方法(此处:退格键、Tab 键在终端中不起作用(使用 ssh)),但我需要完全重新映射键盘......
如何设置 ssh 会话来修复登录时的术语问题和键盘问题?
PS:远程“用户”是所有开发人员使用的“共享”帐户,位于我们的后端发行版中。我不想触摸 .*rc 脚本以避免任何不需要的副作用
答案1
由于它是一个共享帐户(不会讨论这通常是多么不明智)-并且您正在使用 csh,因此您需要做两件事
- 创建一个与 .login 文件类似的个人环境文件(.login 对应于 csh,.profile 对应于 bash、sh 等。
- 登录后输入
source 'file_just_created'
在您创建的文件中,您可以为退格键执行一些简单的操作 - 无论您已经在做什么,例如,
stty erase ^H
另外,对于您的术语设置 - 只需添加到文件中即可!
setenv TERM xterm
或任何您需要/适用于您的终端会话的值
概括-mySetupFile
使用一个或多个 stty 命令创建, setenv TERM myFavTermName
并在提示符下登录后添加 和source mySetupFile
额外:您还可以查找 xterm 的 terminfo 文件,例如,/usr/share/lib/terminfo/x/xterm
如果/usr/share/lib/terminfo/x/xterm-256color
不存在,如果允许,请查看是否
ln /usr/share/lib/terminfo/x/xterm /usr/share/lib/terminfo/x/xterm-256color
解决您的编辑问题。
如果可行的话,还可以做其他事情(要创建和定义新的 terminfo,请使用命令tic
aka术语信息编译器iirc.可能会让很多人开心。
答案2
在您的用户的主目录中,您应该有一些隐藏的登录脚本文件。以您的用户身份打开 SSH 会话,通过运行 pwd 命令确保您登录到家庭。如果没有 cd $HOME 到达那里。
在那里用 ls -la 列出内容以显示隐藏文件。您应该有一个 .login、.cssh、.bashrc、.ksh 或类似的命名文件,在您登录时执行。您可以在此处设置自定义命令,或导出环境变量。
设置通过 ssh 连接传递的环境变量的另一个选项是编辑服务器上的 /etc/ssh/sshd_config 文件,通过将 AcceptEnv MYVAR.txt 设置为接受新的环境变量。您还必须设置客户端 SSH 程序来发送这些变量供 ssh 服务器端接收,然后通过设置 SendEnv MYVAR 来设置它们。
答案3
Solaris 上的 csh 是 Bill Joy 的原始 csh,它使用 Escape 而不是 Tab 来进行自动完成(并且只有在set filec
第一次使用时才会激活),并且没有命令行编辑,无论有或没有箭头键。如果您需要这些功能,则需要使用 tcsh。