मेरे 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