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-shellperintah:
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-shelldan 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-shellatau run-shellperintah itu sendiri ( tmux adalah single-threaded). Secara efektif, jika Anda menggunakan if-shellatau run-shelldalam ~/.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-shellatau run-shellperintah.
if-shellbekerja 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-namespaceyang 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