获取stty:标准input:通过ssh隧道使用scp时,设备的ioctl不适当

根据标题,当我尝试scp通过ssh隧道时,我收到以下警告。 在我的情况下,我不能scp直接foo,因为设备foo上的端口1234被转发到专用networking上的另一个机器栏(和bar是给我一个隧道到192.168.1.23隧道的机器)。

 $ # -f and -N don't matter and are only to run this example in one terminal $ ssh -f -N -p 1234 userA@foo -L3333:192.168.1.23:22 $ scp -P 3333 foo.py ubuntu@localhost: ubuntu@localhost's password: stty: standard input: Inappropriate ioctl for device foo.py 100% 1829 1.8KB/s 00:00 

有谁知道为什么我可能会得到这个警告关于Inappropriate ioctl for device

当我在~/bashrc加入下面一行时,我遇到了同样的问题:

 stty -ixon 

这一行的目的是允许使用Ctrl-s反向搜索bash 。

这个链接有一个解决方案 (不可用)

上述链接的Web Archive版本

“stty”适用于ttys,您可以使用它进行交互式登录会话。 .kshrc是为所有会话执行的,包括stdin不是tty的。 除了将它移动到你的.profile之外,解决方案是使它成为交互式shell的执行条件。

有几种方法可以检查有意义的shell 。 以下解决了bash的问题:

 [[ $- == *i* ]] && stty -ixon