У меня есть большое количество машин Linux, все из которых монтируют мой корневой каталог по NFS. Если бы я нахожусь в ~/foo/bar/baz, я хотел бы смочь к ssh к другой машине и автоматически начать использовать это в качестве моего рабочего каталога. Кажется, нет простого способа сделать это; я могу думать о некоторых hacky, но хотел бы проверить прежде, чем судить их.
Проверьте SendEnv (в ssh_config
) и AcceptEnv (в sshd_config
). Вы смогли отправлять PWD; хотя в принимающем конце, просто получив PWD не будет достаточно, чтобы заставить новую оболочку запуститься в желаемом каталоге.
Таким образом, Вы могли сделать что-то как:
SendEnv SSH_PWD
в Вашем ssh_config
и AcceptEnv SSH_PWD
в Вашем sshd_config
.:
alias ssh='env SSH_PWD="$PWD" /bin/ssh'
if [ -n "$SSH_PWD" ]; then
cd "$SSH_PWD"
unset SSH_PWD
fi
Как насчет этой функции удара (предполагающий, что удар действительно является Вашей оболочкой):
sshcd() {
CWD=`pwd`
HOME_BASED=${CWD#$HOME}
ssh -t $1 "cd ~$HOME_BASED;bash -l"
}
Вы могли затем сделать sshcd foobar
к ssh к foobar измените каталог там и выполните удар.
Я не знаю, считают ли это "Hacky" или нет, но здесь является идеей:
Так как Ваш homedir совместно используется через все серверы, тот же профиль будет выполняться при входе в систему. У Вас мог быть свой .profile, делают что-то вроде этого внизу:
CURR_DIR=$(cat ~/.current_dir)
if [[ -n $CURR_DIR ]] && [[ -d $CURR_DIR ]]; then
cd $CURR_DIR
fi
Затем исказите свою команду SSH для запущения скрипта, который поместит текущий dir в Ваш ~/.current_dir
файл прежде, чем выполнить команду SSH, и удаляет ~/.current_dir
файл однажды соединение SSH был закрыт.
Я не протестировал это, но это могла быть начальная точка.
Удачи!