Ada beberapa baris tmux.conf yang ingin saya jalankan hanya jika OS saya adalah Mac. Namun, saya ingin menggunakan tmux.conf di beberapa OS yang berbeda. Bagaimana saya bisa membuat perintah untuk OS yang menjalankan tmux saat ini?
Ada beberapa baris tmux.conf yang ingin saya jalankan hanya jika OS saya adalah Mac. Namun, saya ingin menggunakan tmux.conf di beberapa OS yang berbeda. Bagaimana saya bisa membuat perintah untuk OS yang menjalankan tmux saat ini?
Jawaban:
Gunakan if-shell
perintah:
if-shell "uname | grep -q Darwin" "tmux-cmd1; tmux-cmd2;" "tmux-cmd3; tmux-cmd4"
Anda mungkin ingin menempatkan perintah khusus OS dalam file terpisah, dan menjalankannya melalui perintah "file sumber".
if-shell "uname | grep -q Darwin" "source-file .tmux-macosx" "source-file .tmux-linux"
if-shell
dan run-shell
tmux saat ini tidak sinkron (pada tmux 1.7); mereka secara efektif menjalankan perintah shell mereka di latar belakang, dan perintah tmux apa pun yang mereka jalankan hanya akan dieksekusi setelah perintah yang datang setelah if-shell
atau run-shell
perintah itu sendiri ( tmux adalah single-threaded). Secara efektif, jika Anda menggunakan if-shell
atau run-shell
dalam ~/.tmux.conf
, sesi awal (dan sesi, jendela, atau panel yang dibuat secara eksplisit dibuat melalui ~/tmux.conf
) akan kekurangan konfigurasi tmux yang diatur melalui if-shell
atau run-shell
perintah.
if-shell
bekerja seperti yang diharapkan untuk saya dengan tmux 1.8. Saya menggunakannya untuk mengatur set-title-string hanya untuk SSH: github.com/blueyed/dotfiles/commit/…
Jimeh https://github.com/jimeh/dotfiles/commit/3838db8 memiliki jawabannya. Chris Johnsen juga layak mendapatkan banyak pujian karena membantu orang-orang dalam masalah GitHub di sini: https://Github.com/ChrisJohnsen/tmux-MacOSX-pasteboard/issues/8#issuecomment-4134987
Pada dasarnya, Anda membuat skrip shell yang disebut safe-reattach-to-user-namespace
yang memeriksa keberadaan perintah reattach ... nyata.
#! /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