В дни многозадачности я иногда выгружаюсь из сеанса SSH по той или иной причине (тайм-ауты простоя и т. д.), пока работаю над другой задачей. Когда я возвращаюсь к терминалу, я снова оказываюсь на localhost, и мне нужно снова подключиться к серверу по SSH. Вернувшись на сервер, я всегда ~
по умолчанию нахожусь в своем домашнем каталоге и мне нужно вернуться в каталог, в котором я был в последний раз (если я его помню), чтобы продолжить работу.
Можно ли автоматически вернуться в последний каталог, в котором я работал, при входе в систему?
Я думал, что домашнее решение будет заключаться в создании псевдонимов cd
для смены каталогов, а также в сохранении этого каталога в какой-то переменной среды, а затем в переходе на этот каталог в моем .bash_profile
.
Но есть ли уже подобная функциональность в Linux?
решение1
Вместо решения cd
проблемы сохранения вам следует рассмотреть варианты возобновления сеанса работы с оболочкой.
tmux
- Внутри SSH запустите,
tmux
чтобы начать новый сеанс - Если отключение произошло, снова войдите по SSH и запустите,
tmux attach
чтобы возобновить сеанс. - Внутри
tmux
сеанса вы можете нажать CtrlB, а затем , Dчтобы отсоединиться
- Внутри SSH запустите,
screen
- Внутри SSH запустите,
screen
чтобы начать новый сеанс - Если отключение произошло, снова войдите по SSH и запустите,
screen -r
чтобы возобновить сеанс. - Внутри
screen
сеанса вы можете нажать CtrlA, а затем , Dчтобы отсоединиться
- Внутри SSH запустите,
mosh
mosh
представляет собой замену SSH, работающую по протоколу UDP и устойчивую к сбоям в работе сети
решение2
Нет необходимости в стороннем программном обеспечении или приложении, просто используйте встроенный Linux
- при выходе из системы назначить $PWD (последний каталог) временной переменной перед выходом из системы:
echo $PWD >~/lastdir
- при входе в систему перейдите в каталог ~/.bash_profile:
cd $(<~/lastdir)
решение3
Можно добавить следующее выражение в ~/.bash_logout
echo `pwd` >~/.lastdir
(как предложил @isaac-Zhao) добавьте следующее в ~/.bash_profile
cd $(<~/.lastdir)