Terminal 为什么'sttycols40'在bash和xonsh两个shell中有不同的效果
在Linux/macOS上的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读
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)设定了一个目标。。。