tmux.conf 내장 쉘 스크립트?

tmux.conf 내장 쉘 스크립트?

내 에서는 tmux.conf현재 사용자의 대문자 이름으로 세션을 시작해야 합니다(실제로는 단순화했지만 예제로 사용됩니다).

불법적인 다음과 같은 가상의 줄을 상상해 보세요.

new-session -n BananaWindow -s "$(echo "${USER}" | tr '[:lower:]' '[:upper:]')" 'bash -l'

위의 내용을 어떻게 달성할 수 있나요?

답변1

내 경험상 .tmux.conf각 명령문 if-shellsource-file.

호스트 기반 프로필을 수행하는 방법은 다음과 같습니다.

# Use `run-shell` to resolve arbitrary shell commands, and set-environment to
# make them available to tmux.
#
# Note that any variables set with `set-environment` are not available later in
# the same conf file, but will be available interactively once the conf file
# has loaded--and also in any sourced conf files.
run-shell "tmux set-environment -g TMUX_PROFILE $(hostname)"

# Here we're just defining a variable to reduce duplication later...
set-environment -g TMUX_PROFILE_PATH "${HOME}/.tmux/profiles/${TMUX_PROFILE}.tmux"

# The file that contains the instruction to source the proper conf file.  We
# have to put the command contained in this file in a separate file because of
# that `set-environment` issue.
source-file "${HOME}/.tmux/profiles/select-profile.tmux"

콘텐츠 ${HOME}/.tmux/profiles/select-profile.tmux:

if-shell "test -f ${TMUX_PROFILE_PATH}" 'source-file ${TMUX_PROFILE_PATH}' 'display-message "profile not found: ${TMUX_PROFILE_PATH}"'

이제 호스트별 구성을 입력하기만 ${HOME}/.tmux/profiles/하면 자동으로 로드됩니다.


명명된 세션에도 유사한 기술을 사용할 수 있습니다.

run-shell "tmux set-environment -g SESSION_NAME $(echo "${USER}" | tr '[:lower:]' '[:upper:]')"
source-file "${HOME}/.tmux/functions/named-session.tmux"

콘텐츠 ${HOME}/.tmux/functions/named-session.tmux:

new-session -n BananaWindow -s "${SESSION_NAME}" 'bash -l'

관련 정보