stty: : 无效参数

stty: : 无效参数

我正在 telnet 到 Solaris 计算机,并且我的脚本出现上述错误。我意识到这是一个常见问题,解决方案是在我的个人资料中检查“stty擦除^H”行,但我找不到它。

.profile 没有任何对 stty 的引用,而且我在任何地方都没有 .cshrc 。我在我的主目录中执行了 grep,但什么也没得到。

这个问题还有其他来源吗?网上的所有解决方案都引用 .profile 或 .cshrc。谢谢。

答案1

-要跟踪您的个人资料,请尝试使用以和 选项开头的名称调用您的登录 shell,-x以便打印 .要了解您的登录 shell 是什么,请运行getent passwd $USER;您的登录 shell 是该行的最后一个字段(通常/bin/something)。要调用名称以 开头的 shell -,请创建一个名称以 开头的符号链接-并运行它。例如,如果您的登录 shell 是 ksh:

ln -s /bin/ksh ./-ksh
./-ksh -x
rm ./-ksh

我不确定这是否适用于 csh。如果您没有找到任何有趣的内容,请查看/etc您的点文件:

grep stty /etc/* ~/.* 2>/dev/null

答案2

我有这个,它位于stty.kshrc 中。请记住,.kshrc 源自所有 ksh 脚本(交互式和非交互式)。如果你运行一个脚本,stty 仍然会触发,尝试在 stdin 上工作,这是一个文件(现在不是 tty)并失败并出现错误。

答案3

来自 csh 手册页:

登录 shell 首先执行系统文件中的命令/etc/csh.cshrc/etc/csh.login。然后它从用户主目录中的文件执行命令:首先〜/.tcshrc(+) 或者,如果未找到 ~/.tcshrc,〜/.cshrc, 然后~/.历史(或 histfile shell 变量的值),然后〜/.login,最后〜/.cshdirs(或 dirsfile shell 变量的值)(+)。 shell 可能会在 /etc/csh.cshrc 之前而不是之后读取 /etc/csh.login,并且在 ~/.tcshrc 之前而不是之后读取 ~/.login 或 ~/.cshrc 和 ~/.history(如果如此编译);请参阅版本 shell 变量。 (+)

所以有几个文件你可以找到这一行

答案4

您还可以使用tty测试 tty: tty -s && stty erase ^H

tty -s的返回码指定当前连接是否为 tty。

相关内容