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 bash
con 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 $USER
no contenga caracteres especiales para el shell (si existe una posibilidad remota de que así sea,no debe pasarlo como argumento a eval
ya que sería peligroso )o /
caracteres y hay una entrada para ese usuario en la base de datos de usuarios del sistema.
Да.
Вы имеете в виду оболочку внутри 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
.
Оболочка внутри tmux? Он должен получить SIGWINCH, если размер изменился.
Если вы хотите знать, даже если размер не изменился, вам нужно либо написать скрипт, который опрашивает с помощью tmux ls/lsp, чтобы увидеть, когда сессия, содержащая панель оболочки, становится присоединенной, либо взломать tmux, чтобы отправить сигнал на каждая затронутая панель при прикреплении.