Є кілька рядків мого tmux.conf, які я хотів би виконати, лише якщо моя ОС Mac. Однак я хотів би використовувати свій tmux.conf у кількох різних ОС. Як я можу зробити команду умовною для ОС, на якій зараз працює tmux?
Є кілька рядків мого tmux.conf, які я хотів би виконати, лише якщо моя ОС Mac. Однак я хотів би використовувати свій tmux.conf у кількох різних ОС. Як я можу зробити команду умовною для ОС, на якій зараз працює tmux?
Відповіді:
Використовуйте if-shell
команду:
if-shell "uname | grep -q Darwin" "tmux-cmd1; tmux-cmd2;" "tmux-cmd3; tmux-cmd4"
Ви можете покласти спеціальні команди для команди в окремі файли та виконати їх за допомогою команди "вихідний файл".
if-shell "uname | grep -q Darwin" "source-file .tmux-macosx" "source-file .tmux-linux"
if-shell
та і run-shell
tmux в даний час асинхронні (станом на tmux 1.7); вони ефективно виконують свою команду оболонки у фоновому режимі, і будь- які команди tmux, які вони виконують, виконуватимуться лише після будь-яких команд, що надходять після самої команди if-shell
або run-shell
команди ( tmux є однопотоковою). Ефективно, якщо ви використовуєте if-shell
або run-shell
в ~/.tmux.conf
, початкова сесія (і будь-які сеанси, вікно або скла створеної явно створюються з допомогою ~/tmux.conf
) буде бракувати будь-яку tmux конфігурацій розташовані через if-shell
або run-shell
команду.
Jimeh https://github.com/jimeh/dotfiles/commit/3838db8 має відповідь. Також Кріс Джонсен заслуговує великої заслуги на допомогу людям у питанні GitHub тут: https://Github.com/ChrisJohnsen/tmux-MacOSX-pasteboard/isissue/8#issuecomment-4134987
В основному ви встановлюєте скрипт оболонки, який називається, safe-reattach-to-user-namespace
який перевіряє наявність реальної команди повторного вкладення ...
#! /usr/bin/env bash
# If reattach-to-user-namespace is not available, just run the command.
if [ -n "$(command -v reattach-to-user-namespace)" ]; then
reattach-to-user-namespace $@
else
exec "$@"
fi