Конфігурація tmux, умовна для ОС


41

Є кілька рядків мого tmux.conf, які я хотів би виконати, лише якщо моя ОС Mac. Однак я хотів би використовувати свій tmux.conf у кількох різних ОС. Як я можу зробити команду умовною для ОС, на якій зараз працює tmux?


Відповіді:


51

Використовуйте 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"

8
Команди 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команду.
Кріс Джонсен

1
@ChrisJohnsen if-shellпрацює для мене, як і очікувалося, з tmux 1.8. Я використовую його для встановлення set- title
blueyed

2
Це слід прийняти; це правильний спосіб зробити це.
Шев

11

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.