我正在通过如下脚本从其源代码编译tmux :
set -e
DIR="${HOME}/Programs/"
build() {
[[ -d "${DIR}" ]] || mkdir -p "${DIR}"
cd "${DIR}"
if [[ ! -d tmux ]]; then
git clone https://github.com/tmux/tmux
fi
cd tmux
git stash
git checkout master
git pull
make clean; make distclean
sh autogen.sh
./configure
make
}
install() {
dpkg -r tmux
checkinstall --pkgname tmux --pkgversion '9999:9999.9999' -y
}
build
install
它按预期编译和安装 tmux。
但仍然存在一个问题,即报告的版本$ tmux -V
:
$ tmux -V
tmux master
它报告tmux master
,虽然我更愿意tmux X.Y
,X.Y
是最新版本的版本。例如,目前最新版本是2.8
,所以我想$ tmux -V
输出tmux 2.8
.
有什么办法可以改变这个输出吗?
我查看了 的输出./configure --help
,并搜索了一个选项来设置 tmux 进程的版本,但找不到。
目前,我sed
在我的脚本中包含了一个命令,以便它自动编辑文件configure.ac
,并分配一个大版本号99.99
(我不知道如何以编程方式获取最新版本的版本号):
sh autogen.sh
sed -i 's/AC_INIT(tmux, master)/AC_INIT(tmux, 99.99)/' configure.ac
./configure
有没有更好的办法?
之所以问这个问题是因为我用的是tmux-open$ tmux -V
插件,输出的时候没有按预期工作tmux master
。
后者使用这行代码来确定当前 tmux 进程的版本:
$ tmux_version="$(tmux -V | cut -d ' ' -f 2)"
然后插件使用这个变量来确定安装键绑定的命令的语法。
我的机器上没有安装键绑定,我认为这是由于$ tmux -V
. 因为如果我在插件中替换这一行:
if [[ $tmux_version == $1 ]]
用这一行:
if [[ $tmux_version == $1 ]] || [[ $tmux_version == 'master' ]]
然后插件正确安装其键绑定。
插入一行:
sh autogen.sh
在你的脚本中调用之前。基于这里的答案