Відповідь Майка, ймовірно, спрацює. Але варто зазначити, що ви можете це ретельно вибирати, які файли запуску для розміщення багатослівних речей. З сторінки bash man:
Коли bash викликається як інтерактивна оболонка входу, або як неінтерактивна оболонка з опцією --login, вона спочатку зчитує та виконує команди з файлу / etc / profile, якщо такий файл існує. Прочитавши цей файл, він шукає у такому порядку ~ / .bash_profile, ~ / .bash_login та ~ / .profile та зчитує та виконує команди з першого, який існує та читається. Параметр --noprofile може використовуватися, коли оболонка запускається для пригнічення такої поведінки.
Коли запускається інтерактивна оболонка, яка не є оболонкою для входу, bash зчитує та виконує команди з ~ / .bashrc, якщо цей файл існує. Це може бути пригнічено за допомогою параметра --norc. Параметр файлу --rcfile змусить bash читати та виконувати команди з файлу замість ~ / .bashrc.
Інструменти sftp / scp запускають інтерактивну оболонку без входу, тому .bashrc буде отриманий. Багато дистрибутивів джерело .bashrc з .bash_profile або навпаки, так що це може заплутатись. Хороший трюк для перевірки чистоти вашого середовища для входу в систему - ввімкнути команду, яка імітує той самий спосіб підключення scp / sftp. Наприклад: ssh myhost /bin/true
покаже вам саме те, що бачить scp / sftp, коли вони підключаються.
Проста демонстрація:
insyte@mazer:~$ echo "echo Hello from .profile" > .profile
insyte@mazer:~$ echo "echo Hello from .bashrc" > .bashrc
sazerac:~ insyte$ ssh mazer /bin/true
Hello from .bashrc
sazerac:~ insyte$
insyte@mazer:~$ rm .bashrc
sazerac:~ insyte$ ssh mazer /bin/true
sazerac:~ insyte$
Перший тест призведе до розриву scp / sftp / rsync тощо. Друга версія буде працювати чудово.
.bashrc
б source'd дляscp
абоssh host command
.