在正在运行的 Tmux 会话中,如何找出 tmux 使用的配置文件?

在正在运行的 Tmux 会话中,如何找出 tmux 使用的配置文件?

tmux我在 Arch Linux 上并且在我的终端中运行。

~ ❯ tmux -V
tmux 3.2a

在 tmux 会话中运行时,如何确定是否:

  1. Atmux.conf正在使用
  2. 正在使用的文件的位置tmux.conf

答案1

我认为可能存在一个误解:当你“在 tmux 会话中”时,tmux.conf不是“被使用”,它已经用过。比较这个关于 Bash 的答案和.bashrc,类似的情况。链接答案的段落之一可以从“bash”“翻译”为“tmux”。 “翻译”版本将是:

不要将其视为保存shell tmux 服务器当前设置的文件。它的意思是有来源的.bashrc tmux.conf一旦进入干净的shell tmux 服务器,就会自动。人们有时会再次手动获取它并且它有效* [...]

* 它适用于第二次执行旧事物可能产生的副作用。

解析配置文件后,tmux 服务器甚至可能会忘记该文件。此时服务器的配置就完成了本身才是最重要的。配置由文件强加,但既不存储在文件中,也不从文件中更新。文件中的更改不会影响已经运行的服务器,因为该文件(即它的旧版本)已经被处理。

然而,Tmux 确实会记住已加载的配置文件。此信息可作为名为的格式变量使用config_files。例如,在 tmux 内的 shell 中,您可以执行以下操作:

tmux display-message -p 'This is a list of config files: #{config_files}'

对我来说,该命令打印:

This is a list of config files: /etc/tmux.conf,/home/kamil/.tmux.conf

如果您确实想了解该文件存在使用然后检查current_file格式变量。#{current_file}格式字符串中的 将会扩展为正在处理的文件的路径名(自动或使用source-file)。在任何文件之外(例如,如果您tmux display-message -p '#{current_file}'在 tmux 内的 shell 中运行),它将扩展为空字符串。

根据变更日志current_file在 tmux 3.2 中添加。

答案2

不太好,但是运行tmux -v(从用户具有写入权限的目录开始,然后 )grep loading tmux-server-<pid>.log。请记住退出并删除日志,因为它们增长得很快。

然而,一般来说,对于正在读取的配置文件位置,您应该只有几种可能性(在 3.2a 上测试):

  • 首先,如果tmux -f configfile使用,它胜过所有其他。甚至系统配置也不会被处理。
  • -f如果命令行上 没有:
    • /etc/tmux.conf然后处理系统(如果存在)。
    • 然后处理用户配置~/.tmux.conf(如果存在)。
    • 然后(特定于 3.2a)处理用户配置~/.config/tmux/tmux.conf(如果存在)。

当然,其中任何一个都可以是source-file另一个,另一个也可以是source-file另一个,依此类推。但至少应该很容易解开正在发挥作用的配置。

相关内容