Этот вопрос напомнил мне одну из моих собственных. Я хочу создать псевдоним, который будет ssh
к машине, запускает команду (в данном случае cd
по указанному пути), а затем дает мне оболочку. Я пробовал сотню вариантов этого:
$ ssh user@machine 'cd /some/path/ && bash -i -l'
что примерно лучшее, что я могу сделать. Это дает мне приглашение bash в нужном каталоге, но без управления заданиями и без возможности использовать клавиши со стрелками (и некоторые другие сочетания клавиш). Есть простой способ сделать это?
Я не могу сделать это легко в конце моего bashrc или профиля, потому что путь, по которому я хочу перейти, будет варьироваться (я передам его в качестве аргумента псевдониму), а иногда я даже могу использовать ssh на этой машине не желая вообще никуда идти - домашний каталог в порядке.
Попробуйте дать ssh -t
возможность выделить терминал.
Посмотрите справочную страницу sshd, раздел Формат файла Authorized_keys. Внутри него есть опция command = "command", которая указывает, что делать, когда этот ключ подключается. Исходная включенная команда для подключения включается в переменную.
Возможно, вы сможете настроить эту команду для запуска bash со сценарием запуска, который проверяет исходное значение команды и запускает его, а затем оставляет вас в интерактивной оболочке.
Это будет иначе, потому что cd
не команда, а скорее встроенная оболочка, которая изменяет текущий рабочий каталог программы.
Боюсь, я так и не нашел хорошего способа сделать это - но, возможно, это поможет прояснить некоторую путаницу.
Я думаю, лучшее место для твоего cd /some/path/
в твоем .bashrc
на удаленной машине.