Terminal 为什么'sttycols40'在bash和xonsh两个shell中有不同的效果

Terminal 为什么'sttycols40'在bash和xonsh两个shell中有不同的效果,terminal,ioctl,stty,xonsh,Terminal,Ioctl,Stty,Xonsh,在Linux/macOS上的shell中使用stty时,我会有奇怪的行为。(命令似乎不符合xonsh下定义的列,但它们在bash下是这样做的。) 为了更好地理解这种情况,我编写了一个小小的C程序,用TIOCGWINSZ调用3个标准流stdin,stdout,stderr,并打印出宽度 在执行任何stty命令之前,我得到ioctl宽度的以下结果: 猛击 克逊什 stdin=80,stdout=80,stderr=80 stdin=80,stdout=80,stderr=80 默认情况下,stty读

在Linux/macOS上的shell中使用
stty
时,我会有奇怪的行为。(命令似乎不符合xonsh下定义的列,但它们在bash下是这样做的。)

为了更好地理解这种情况,我编写了一个小小的C程序,用
TIOCGWINSZ
调用3个标准流
stdin
stdout
stderr
,并打印出宽度

在执行任何
stty
命令之前,我得到ioctl宽度的以下结果:

猛击 克逊什
stdin=80,stdout=80,stderr=80
stdin=80,stdout=80,stderr=80

默认情况下,stty读取/设置stdin上的终端设置。您可以使用
-F
-file
参数设置其他终端

stty -F /dev/stdout ...

现在的问题是,如果stdin和stdout(以及stderr)都连接到同一个终端,那么它们之间为什么会有区别?设置应该是每个终端,而不是每个文件描述符。我不知道。

有趣!我试过了,它在xonsh的领导下确实有效!仍然奇怪的是,在熊的统治下,我似乎也被迫为stdout(和sterr)设定了一个目标。。。