3

Хорошо, я давно пользуюсь linux, но это самая странная вещь, с которой я столкнулся за долгое время. Может быть, я просто не делаю много scp, так что, возможно, здесь что-то упущено. Итак, в моем файле .bashrc у меня есть следующее.

export KERNEL=$(uname -r)
#echo "HOST: $HOSTNAME: KERNEL VERSION: $KERNEL"
if [ $KERNEL == "2.6.32-431.3.1.el6.x86_64" ];then
   ... logic here
else
    .. more logic
fi

Теперь, если я раскомментирую эту строку эха, то следующая команда не будет работать! Он просто показывает эхо, но не копирует. Если я удаляю эту строку, он делает копию

$ scp -r host1.net:/prod/path1/path2/dir1/etc /tmp/user/sim/dir1
HOST: host1.net: KERNEL VERSION: 3.4.70-1.el6.companyX


$ scp -r host1.net:/prod/path1/path2/dir1/etc /tmp/user/sim/dir1

pybackup 100% 174 0,2 КБ / с 00:00
Proxy.ini 100% 623 0,6 КБ / с 00:00

Это странно...

1 ответ1

0

Использование echo в .bashrc нарушит работу scp, так как scp ожидает увидеть данные своего протокола по каналам stdin/stdout. См. Https://bugzilla.redhat.com/show_bug.cgi?id=20527 и этот пост для более подробного обсуждения этой проблемы.

Доступно несколько обходных путей, как использовать echo безопасным для scp способом в .bashrc:

case $- in *i*) echo Hello World ; esac
tty >/dev/null && echo Hello World
if [ -t 1 ]; then echo Hello World ; fi

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .