Ele não está funcionando porque o scp espera que o lado remoto se comporte exatamente como "exatamente", e não grite BEM-VINDO de volta para ele. (Seria bom se daria uma mensagem de erro, mas ...).
Use sftp
(que não gera um shell de login) em vez de scp
ou tenha seu .bashrc
detectado se estiver em uma sessão interativa ou não. Parece haver algumas maneiras de fazer isso:
if [ -n "$PS1" ]; then
echo WELCOME
fi;
O outro método usado para verificar se "$ -" contém "i" parece estar quebrado, pois [
não faz *
em comparações de strings. Isso deve funcionar embora (verifica se $ - está definido, então verifica se $ - com "i" removido é o mesmo que $ -. Há provavelmente uma maneira melhor, mas não consigo pensar nisso no segundo )
if [ -n "$-" -a "${-/i}" != "$-" ]; then
echo WELCOME
fi;