Вы можете временно скопировать свой .bashrc
файл на удаленный компьютер под другим именем. Например, используя .bashrc_temp
:
user@local$ scp .bashrc user@remote:~/.bashrc_temp
После этого вы можете войти на удаленный компьютер:
user@local$ ssh user@remote
и source
файл .bashrc_temp
:
user@remote$ source ~/.bashrc_temp
Теперь вы можете использовать свои .bashrc
и свои функции. Когда вы закончите свою работу, вы можете удалить файл ~ / .bashrc_temp на удаленной машине и выйти из системы.
Копирование файла и вход на удаленный компьютер могут быть выполнены с помощью функции bash:
# copy the .bashrc to the remote machine
# and log into the remote machine.
# parameter $1: user@remote
function s() {
scp ~/.bashrc $1:~/.bashrc_temp
ssh $1
}
Обновление :
Вы можете также рассмотреть , чтобы скопировать .bashrc
на /tmp
на удаленной машине и источник /tmp/.bashrc_temp
.
Обновление 2 :
Вы можете войти на удаленный компьютер с помощью ssh -t . Это автоматически использует ваш темп .bashrc
. Обновленная функция s()
:
function s() {
scp ~/.bashrc $1:/tmp/.bashrc_temp
ssh -t $1 "bash --rcfile /tmp/.bashrc_temp ; rm /tmp/.bashrc_temp"
}
/tmp/
. Это может легко использоваться любым другим пользователем для запуска любого кода в качестве пользователя, который входит в систему. Это следует использовать,mktemp
чтобы убедиться, что временный файл имеет уникальное имя.Дженс-на предоставил отличный ответ. Я потратил немного времени и переделал его, чтобы немного улучшить работу. Таким образом, вы можете передать в SSH любой параметр, например номера портов. Разница в том, что он использует
ssh
команду для загрузки.bashrc
файла, а неscp
использует разные имена параметров команды.Вы также заметите, что он загружает другой файл,
.bashrc_remote
так что вы можете выбрать именно то, что вы хотите получить на удаленных серверах, вместо всегоЗапустите его следующим образом:
Название '
sshs
' для "Источник SSH". Используйте,ssh
когда вы не хотите, чтобы источник, и используйте,sshs
когда вы делаете.https://gist.github.com/jonahbron/5549848
источник
Pseudo-terminal will not be allocated because stdin is not a terminal
Я думаю, что sshrc это то, что вы ищете: https://github.com/Russell91/sshrc
Вы можете использовать это для установки переменных среды, определения функций и запуска команд после входа в систему. Это так просто, и это не повлияет на других пользователей на сервере - даже если они тоже используют sshrc. Для более сложной конфигурации, продолжайте читать.
источник
vim $(which sshrc)
и вы можете увидеть файл Bash. Вы можете добавить эхо-команды после каждой строки, чтобы увидеть, где она висит.Не уверен в ограничениях, но я смог заставить это работать с чем-то вроде:
источник
RC_DATA
переменной.Это то, что я придумал. Он позволяет вам поддерживать обычный rc-файл, но также делать все в одном ssh-соединении (то есть, нужно войти в систему только один раз, а не делать scp в первую очередь).
Я не уверен, насколько большим может быть этот rc-файл, поскольку в какой-то момент он может быть максимальным.
источник
Я думаю, что https://github.com/fsquillace/pearl-ssh делает то, что вам нужно.
Я написал это давным-давно, еще до рождения sshrc, и он имеет больше преимуществ по сравнению с sshrc:
Например:
источник
Один из вариантов заставить его работать с одним сеансом SSH - использовать переменную для хранения вашего bash-файла, а не копировать его.
Кажется, работает на меня.
источник
Я искал решение такой проблемы, как ваша, и понял, что я действительно искал sshfs. Может быть, вы тоже можете использовать это?
Моя проблема заключалась в том, что при работе с ssh'ом я хотел сохранить свои цвета, псевдонимы, функции и сценарии во время работы на расстоянии.
http://fuse.sourceforge.net/sshfs.html
источник