मेरे tmux.conf की कुछ पंक्तियाँ हैं जिन्हें मैं केवल तभी निष्पादित करना चाहूँगा जब मेरा OS Mac होगा। हालाँकि, मैं अपने tmux.conf का उपयोग कई अलग-अलग OS पर करना चाहूँगा। मैं ओएस पर एक कमांड सशर्त कैसे बना सकता हूं, जिस पर वर्तमान में चल रहा है?
मेरे tmux.conf की कुछ पंक्तियाँ हैं जिन्हें मैं केवल तभी निष्पादित करना चाहूँगा जब मेरा OS Mac होगा। हालाँकि, मैं अपने tmux.conf का उपयोग कई अलग-अलग OS पर करना चाहूँगा। मैं ओएस पर एक कमांड सशर्त कैसे बना सकता हूं, जिस पर वर्तमान में चल रहा है?
जवाबों:
उपयोग 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
आदेश देता है।
if-shell
1.8 tmux के साथ मेरे लिए उम्मीद के मुताबिक काम करता है। मैं इसे केवल SSH के लिए सेट-टाइटल-स्ट्रिंग सेट करने के लिए उपयोग कर रहा हूं: github.com/blueyed/dotfiles/commit/...
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