36

В моем tmux.conf есть несколько строк, которые я хотел бы выполнить, только если моей ОС является Mac. Тем не менее, я хотел бы использовать мой tmux.conf на нескольких разных ОС. Как я могу сделать команду условной для ОС, в которой в настоящий момент работает tmux?

2 ответа2

46

Используйте команду 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"
11

Jimeh https://github.com/jimeh/dotfiles/commit/3838db8 имеет ответ. Также Крис Джонсен заслуживает большой похвалы за помощь людям в проблеме GitHub здесь: https://Github.com/ChrisJohnsen/tmux-MacOSX-pasteboard/issues/8#issuecomment-4134987

По сути, вы устанавливаете сценарий оболочки с именем safe-reattach-to-user-namespace который проверяет наличие реальной команды reattach ....

#! /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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .