Я пытаюсь ssh
автоматически перейти в определенный каталог при входе в систему. Я пытался заставить это поведение работать, используя следующие директивы ~/.ssh/config
:
Host example.net
LocalCommand "cd web"
но всякий раз, когда я вхожу, я вижу следующее:
/bin/bash: cd web: No such file or directory
хотя web
в моем домашнем каталоге определенно есть папка. Даже использование абсолютного пути дает одно и то же сообщение. Чтобы было понятно, если я наберу cd web
после входа в систему, я попадаю в нужную папку.
Что мне здесь не хватает?
РЕДАКТИРОВАТЬ:
Различные комбинации кавычек / абсолютных путей дают разные сообщения об ошибках:
LocalCommand "cd web"
/bin/bash: cd web: No such file or directory
LocalCommand cd web
/bin/bash: line 0: cd: web: No such file or directory
LocalCommand cd /home/gareth/web
/bin/bash: line 0: cd: /home/gareth/web: Input/output error
Это заставляет меня думать, что кавычек не должно быть, и что происходит другая ошибка.
Ответы:
CD - это встроенная оболочка. LocalCommand выполняется как:То, что вы хотите сделать, на самом деле не может быть достигнуто через SSH; вам нужно каким-то образом изменить оболочку, например, через bashrc / bash_profile.<Редактирование почти десятилетие спустя ...>
LocalCommand
не то, что вы хотите, в любом случае. Это работает на вашей машине. Вы хотитеRemoteCommand
. Как-то так у меня сработалоисточник
cd
команду~/.bashrc
на удаленном сервере.Это работает:
Чтобы создать каталог, если он не существует:
Если вы не добавите
bash
в конец пути, вы выйдете послеcd
запуска команды. И если вы не добавите,--login
то ваш~/.profile
не является источником.источник
~/.bash_profile
cd /path/to/your/destination
/path/to/your/destination
источник
cd /path/to/your/destination
к~/.bashrc
вместо к~/.bash_profile
. Результат должен быть таким же.~/.bash_profile
или~/.bashrc
это повлияет только на текущего пользователя.Более надежное решение для случая, когда вам нужно ssh и переопределить файл .bashrc по умолчанию. Это полезно в тех случаях, когда среда удаленного сервера имеет несколько корневых узлов и используется несколькими пользователями.
Более подробный:
.bashrc_tmp
файл в/tmp
каталоге на удаленном сервере с содержимымcd /path/to/dir
bash
с файлом конфигурации, указанным в шаге 1. Это позволяет переключиться на нужный каталог и подавить значение по умолчанию.bashrc
.alias
, поэтому в командной строке клиента ssh ее можно назватьssh_myserver
источник
Вы включили эту директиву в конфигурации SSH?
По умолчанию это так
no
, и в этом случае вашаLocalCommand
директива будет игнорироваться.Или вы пытались добавить команду в свой
.bashrc
файл?источник
Таким образом, я искал много сайтов (stackoverflow, этот), но не нашел то, что хотел. Я закончил тем, что создал свой собственный скрипт оболочки. Я вставляю это здесь. Также вы можете скопировать его в каталог в $ PATH.
Итак, после этого. Я делаю:
Примечание. Может потребоваться выйти из системы и войти снова после изменения переменной пути
источник
В вашем
~/.ssh/config
:В конце вашего
~/.bashrc
:Я пытался сделать это с помощью передачи переменных, в том числе с экспортированной переменной, но эти команды выполняются в разных оболочках.
При тестировании того, что вы пытались сделать, я не получил ошибку, когда, между прочим, использовал абсолютный путь без кавычек. Я добавил
; pwd
в конце команды, и отображается правильный каталог, однако каталог, в котором я оказался, есть~
. Вcd
моих файлах запуска оболочки нет команд. Я попытался положить другойcd somedir; pwd
в~/.ssh/rc
(с другой все еще на месте). Командаconfig
выполняется до того, как будет выполнен motd, аrc
команда будет выполнена позже, но до того, как будут получены файлы запуска оболочки. Опять же, это происходит в другой оболочке.Попробуйте метод передачи по файлу и дайте мне знать, работает ли он для вас.
источник
Вы пробовали это без кавычек вокруг этого? Единственные примеры, которые я видел, не имеют их, поэтому они могут пытаться выполнить cd \ web как команду.
источник
Вы также можете попробовать это с опцией
-t
:источник
Попробуйте использовать
RemoteCommand
вместо, например,источник