Может ли оболочка распознать повторное подключение tmux?

Como han señalado otras respuestas, el comportamiento depende del orden en que el shell realiza las expansiones ~y $y si incluso hará ambas cosas para la misma palabra.

Es posible lograr el comportamiento que estaba buscando en bashcon un cambio muy pequeño en su comando. Simplemente prefije el comando con eval.

eval "cd ~$USER"

cambiará al directorio de inicio del usuario proporcionado por el nombre de usuario en la variable USER, siempre que $USERno contenga caracteres especiales para el shell (si existe una posibilidad remota de que así sea,no debe pasarlo como argumento a evalya que sería peligroso )o /caracteres y hay una entrada para ese usuario en la base de datos de usuarios del sistema.

2
26.06.2019, 23:49
2 ответа

Да.

Вы имеете в виду оболочку внутри tmux, которую вы видите после прикрепления? Если да:

tmux set-hook -g client-attached 'run-shell "kill -s WINCH #{pane_pid}"'

Или ту оболочку, в которой вы вызываете tmux attach, ту, которую вы видите перед присоединением? (хотя смысла в этом меньше ). Если да, то что-то вроде:

tmux set-hook -g client-attached 'run-shell "kill -s WINCH \"$(ps -o ppid= -p #{client_pid})\""'

где ps -o ppid= -p #{client_pid}отвечает за получение PID родительского процесса из tmux attach.

-gозначает, что крючок является глобальным. Снимите крюк с помощью tmux set-hook -gu client-attached.

3
27.01.2020, 22:02

Оболочка внутри tmux? Он должен получить SIGWINCH, если размер изменился.

Если вы хотите знать, даже если размер не изменился, вам нужно либо написать скрипт, который опрашивает с помощью tmux ls/lsp, чтобы увидеть, когда сессия, содержащая панель оболочки, становится присоединенной, либо взломать tmux, чтобы отправить сигнал на каждая затронутая панель при прикреплении.

0
27.01.2020, 22:02

Теги

Похожие вопросы