Você pode fazer isso registrando um manipulador de sinal de usuário personalizado em ~/.bashrc
:
trap '[ "$PWD" = "/my/sshfs/mount" ] && cd ~' SIGUSR1
Em seguida, esse manipulador será chamado sempre que você enviar um sinal SIGUSR1
para os processos bash:
killall -u "$USER" -USR1 bash
Isso vem com algumas ressalvas:
- O manipulador de sinal deve ser registrado para todas as instâncias bash (interativas e não interativas), caso contrário, a ação padrão (quit) será executada. Eu acho que usar
~/.bashrc
geralmente faz isso. No entanto, existem opções para bash que irão substituir o fornecimento deste arquivo de inicialização. - Qualquer um dos processos do shell pode estar no meio de algo que depende de estar no diretório sshfs fornecido. A mudança aleatória desse diretório pode causar um comportamento arbitrário indefinido, dependendo do que o script fornecido está fazendo no momento (ou mais tarde).
- Pode haver outros processos iniciados a partir de um processo bash que ainda estão no diretório fornecido. Não há muita coisa que possa ser feita para esses processos, outros matando-os.