当我遇到提供解决方案的评论时,我正在寻找一种很好的解决方法来保持我的.tmux.conf
文件在系统之间保持一致(我同时拥有OS X和Ubuntu,并且它们具有不同的复制/粘贴支持技术): https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard/issues/8#issuecomment-4134987
但在我在评论中使用代码片段之前,我想完全了解它在做什么。特别是,我不太明白最后一行,参数替换的 bash 手册页没有多大帮助。
这是一行:
exec /path/to/actual/tmux ${cfg+-f "$cfg"} "$@"
具体来说,${cfg+-f "$cfg"}
部分是什么意思?
这意味着如果未设置参数,则跳过该参数。实际上会导致以下情况之一:
exec /path/to/actual/tmux -f "/some/cfg" "$@"
exec /path/to/actual/tmux "$@"
因此,如果设置了$cfg
,则使用-f "$cfg"
,否则什么都不使用,因此tmux不会抱怨缺少-f
参数。
这意味着如果设置了变量 cfg
,它将随着 -f "$cfg"
的组合值展开。
例:
> a=1234
> echo "${a+b}" # => variable is set
b
> a=
> echo "${a+b}" # => empty but still set would still expand it.
b
> unset a
> echo "${a+b}" # => it's now unset so no output
(nothing)
另一个带有额外变量:
> a=1234
> x=y
> echo "${a+b "$x"}"
b y
> echo "${a+"$a $x"}"
1234 y