configuração do tmux condicional ao SO


41

Existem algumas linhas do meu tmux.conf que eu gostaria de executar apenas se meu sistema operacional for Mac. No entanto, eu gostaria de usar o meu tmux.conf em vários sistemas operacionais diferentes. Como posso condicionar um comando ao sistema operacional no qual o tmux está sendo executado atualmente?


Respostas:


51

Use o if-shellcomando:

if-shell "uname | grep -q Darwin" "tmux-cmd1; tmux-cmd2;" "tmux-cmd3; tmux-cmd4"

Você pode colocar comandos específicos do SO em arquivos separados e executá-los através do comando "arquivo-fonte".

if-shell "uname | grep -q Darwin" "source-file .tmux-macosx" "source-file .tmux-linux"

8
Os comandos if-shelle run-shell tmux são atualmente assíncronos (a partir do tmux 1.7); eles efetivamente executam seu comando shell em segundo plano, e quaisquer comandos tmux que eles executam serão executados somente após quaisquer comandos que vierem após o próprio comando if-shellou run-shell(o tmux é de thread único). Efetivamente, se você usar if-shellou run-shellem ~/.tmux.conf, a sessão inicial (e todas as sessões, janelas ou painéis criados explicitamente criada através ~/tmux.conf) faltará qualquer tmux configuração organizadas através if-shellou run-shellcomandos.
precisa saber é o seguinte

1
@ ChrisJohnsen if-shellfunciona como esperado para mim com o tmux 1.8. Estou usando-o para definir set- title
blueyed

2
Isso deve ser aceito; é a maneira correta de fazer isso.
Chev

11

Jimeh https://github.com/jimeh/dotfiles/commit/3838db8 tem a resposta. Também Chris Johnsen merece muito crédito por ajudar as pessoas na questão do GitHub aqui: https://Github.com/ChrisJohnsen/tmux-MacOSX-pasteboard/issues/8#issuecomment-4134987

Basicamente, você configura um script de shell chamado safe-reattach-to-user-namespaceque verifica a existência do real realtach ... comando.

#! /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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.