알아채다:응 나도 읽었어bash 스크립트를 통해 tmux 세션에 있는지 어떻게 알 수 있나요?
sudo su -
그 사이에 사용하는 경우 쉘, 쉘 스크립트, 쉘 함수 또는 별칭에서 Tmux 세션을 실행하고 있는지 어떻게 확인합니까?
답변1
파일 에서 /etc/sudoers
환경 변수가 sudo 환경에 전파되도록 명시적으로 허용할 수 있습니다.
예
Defaults requiretty
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"
Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
따라서 한 가지 접근 방식은 생성된 변수를 추가 tmux
하고 통과시키는 것입니다.
답변2
% sudo su -- 2<<STATE
> TMUX='$TMUX'
> exec 2>/dev/tty
> STATE
# . /dev/fd/2
# {
# echo "$TMUX"
# echo "$TMUX" >&2
# }
###OUTPUT
/tmp/tmux-1000/default,23878,1
/tmp/tmux-1000/default,23878,1
sudo
호출 프로세스의 모든 파일 설명자를 닫지만 비밀번호를 입력할 필요 가 0,1,2
없거나 입력할 수 없습니다. 그러나 단일 명령을 실행하는 데 필요한 범위에 대한 차단을 허용할 수 있는 경우 위의 작업을 수행할 수 있습니다./dev/tty
<&0
>&2
이 기술을 사용하여 원하는 다른 것을 휴대할 수 있습니다.