我在我的 .profile 文件中添加了命令stty werase ^H
(该命令使我可以使用 Ctrl + Return 删除单词)。
但是每当我启动我的电脑时,它都会打印以下错误:
加载 /home/stefan/.profile 时发现错误:
stty: 'standard input': 不适合设备的 ioctl
因此,会话将无法正确配置。您应该尽快解决问题。
我试图用strace -f -o <path-to-error> stty werase ^H
. 我不知道它会导致什么。那些想要阅读它的人的链接(pastebin)。
stty
作用于作为标准输入的设备:你得到的错误意味着 stdin 不是终端。使用终端,您仍然可以通过重定向标准输入来重现错误:
.profile
旨在作为一次性设置执行(例如,通过登录 shell)。在您的情况下,该文件显然是由未连接到终端的东西解析的。但即使成功stty
了.profile
,它也不会影响您以后可以使用的所有可能的终端。您需要分别
stty
在每个交互式 shell 中运行。对于 Bash,一个好的地方是.bashrc
(其他 shell 使用其他文件)。.profile
检测 Bash 和 sources是一种相当普遍的做法.bashrc
。在某些(罕见的,相当病态的)情况下,.bashrc
可能源于非交互式 shell,因此您可能想要测试 shell 是否是交互式的,以防万一:或者更好地明确检查 stdin 是否是终端:
或者只是默默地忽略来自以下的错误(如果有的话)
stty
:无论您选择什么,要点是
.profile
这不是一个好地方。