[20150429]使用scp问题.bashrc出现echo.txt
--前几天我在调试tmux时,在.bashrc中加入了如下代码:
if [[ '' = "$TMUX" ]]
then
export INPUTRC=/etc/inputrc
echo Welcome to bash
else
export INPUTRC=/etc/tmux.inputrc
echo Welcome to Tmux
fi
--这样在正常登陆时会显示:
Welcome to bash
--如果启动tmux会显示:
Welcome to Tmux
--但是我遇到一个会诡异问题,就是使用从另外1台机器scp拷贝文件到这台机器,会出现无法拷贝的情况:
# scp /tmp/aa.txt root@192.168.xx.yyy:/tmp
root@192.168.xx.yyy's password:
Welcome to bash
# ssh 192.168.xx.yyy ls -l /tmp/aa.txt
root@192.168.xx.yyy's password:
Welcome to bash
ls: /tmp/aa.txt: No such file or directory
--可以发现文件并没有拷贝过去.如果我注解echo.
if [[ '' = "$TMUX" ]]
then
export INPUTRC=/etc/inputrc
# echo Welcome to bash
else
export INPUTRC=/etc/tmux.inputrc
# echo Welcome to Tmux
fi
# scp /tmp/aa.txt root@192.168.xx.yyy:/tmp
root@192.168.xx.yyy's password:
aa.txt 100% 59KB 59.3KB/s 00:00
--可以发现取消echo,scp工作正常,why? 做一个简单跟踪. 先删除文件.
# strace -o /tmp/scp.txt -f -t scp /tmp/aa.txt root@192.168.xx.yyy:/tmp
root@192.168.xx.yyy's password:
Welcome to bash
--看跟踪文件,居然看不出什么名堂... 只能google!
http://stackoverflow.com/questions/12440287/scp-doesnt-work-when-echo-in-bashrc
https://bugzilla.redhat.com/show_bug.cgi?id=20527
--按照链接介绍,这个bug早就存在,按照介绍我写成如下:
if [[ '' = "$TMUX" ]]
then
if [ "$SSH_TTY" ]
then
echo Welcome to bash
fi
export INPUTRC=/etc/inputrc
else
export INPUTRC=/etc/tmux.inputrc
echo Welcome to Tmux
fi
$ scp /tmp/aa.txt root@192.168.xx.yyy:/tmp
root@192.168.xx.yyy's password:
aa.txt 100% 59KB 59.3KB/s 00:00
--当然我调试已经完成,完全不需要echo的显示.这个在以后工作中注意.