0
我需要導出bash函數以用於下例。請注意,我的例子 中的函數體被簡化了。實際情況比較複雜。我不想在發送鍵參數中寫出整個 函數體。tmux:更新bash函數的環境
#!/bin/bash
TMUX_SESSION="experiment"
LOG_FILENAME="_log"
exec_commad() {
run_my_commad_that_produces_log_messages > $LOG_FILENAME
}
watch_errors() {
tail -F ${LOG_FILENAME} | grep -E ' (WARNING|ERROR|CRITICAL) '
}
tmux new-session -d -s "$TMUX_SESSION"
tmux send-keys "exec_commad" 'C-m'
tmux split-window -v
tmux send-keys "watch_errors" 'C-m'
tmux -2 att -t $TMUX_SESSION
想法是讓
set-option -ga update-environment ' exec_commad watch_errors'
作品也不僅與變量的函數。
函數的源不是不幸的是,環境的一部分。我從來沒有使用過tmux,所以我不知道是否有更好的方法,但我可以建議簡單地將您的命令放在單獨的腳本中,並簡單地調用這些腳本文件? – falstro
@roe是的,但我的例子非常簡單。我有更多的功能,而不僅僅是兩個(對於更多的tmux窗口) - 哪些更多 - 整個腳本是爲單一用法生成的。將函數存儲在單獨的文件中會使問題複雜化(例如:何時刪除這些節奏文件?)。欲瞭解更多信息,我的目標是製作一個工具,在tmux下運行帶有自我監控(持續時間,分析日誌文件,cpu/memory,...)的命令。 –
您可能需要首先使用'export -f exec_command watch_errors'顯式導出函數。 'bash'基本上將函數定義映射爲'()= {...}'形式的單個字符串,並將其分配給與函數具有相同名稱的變量。其他'bash'炮彈可以從這種環境「變量」重建功能。 – chepner