当我在我的FreeBSD服务器的ssh上工作时,总是假定terminal宽度是80列。 例如,手册页显示在一个精简列中,所有使用COLUMNS和LINES环境variables的程序只能猜测80个默认列中的terminal大小。
有没有什么办法让tcsh正确设置这个环境variables并将它们发送给子程序?
sh:取消设置COLUMNS LINES; 导出TERM = xterm
csh:unsetenv COLUMNS LINES; setenv TERM xterm
具有dynamic大小或字体或分辨率的terminal是常态,而不是例外。
在这种情况下,Unix把这些信息放到内核的tty属性中,而不赞成使用$ COLUMNS,$ LINES和termcap / terminfo维度数据。
您可以通过运行“stty -a”来看到内核变暗。 Ssh,rlogin和现代telnet将这些尺寸传递给远程端。
通常情况下,不安定引起更好的行为。 有时,shell会重置env vars(基于“stty”信息)。
不知道关于tcsh,但对于bash,sh和ksh:
eval `resize`
应该做的伎俩。
resize脚本附带了xterm,你可以从ports安装(尽pipe你会得到libX11等)。
tcsh从父shellinheritance环境。 要添加额外的envvars,您可以:
source envvar
其中envvar包含例如:
set history = 5000 # Set save history set savehist = 5000 # Set a prompt set prompt = `whoami`%' ' # Add to the default exported $PATH from the parent shell. set path = `echo $path ~/bin` # Create a new environment variable set newShellVar = whatEver
一旦你进入shell,例如inputtcsh <return>你可以使用以下命令来激活文件:
source envvar
当然,如果你把你的envvar文件命名为~/.tcshrc ,那么当你执行tcsh命令时,这个文件是自动获取的。