标签: tmux

tmux 中的 $SHELL 与我启动它的 shell 中的 $SHELL 不同

我已经为此苦苦挣扎了几个小时,它\xe2\x80\x99让我发疯。当我通过 SSH 连接到家里的机器时,我的默认 shell 是 zsh。我可以用 来确认这一点echo $SHELL,它输出/usr/bin/zsh

\n\n

当我从 zsh 调用 tmux 时,它会将我带入带有 bash shell 的 tmux 窗格。如果我运行echo $SHELL,它会输出/bin/bash. 如果我然后运行chsh -s /usr/bin/zsh <user>, $SHELL 变量实际上不会更新并且仍然输出\\bin\\bash

\n\n

我\xe2\x80\x99m 从 tmux 手册页中知道默认 shell 是在 ~/.tmux.conf 文件中设置的,我\xe2\x80\x98也这样做了,但似乎没有效果。I\xe2\x80\x99ll 在这里包含我的相关配置文件。

\n\n

我应该提到,我的 .tmux.conf 中的其他配置正在生效;我的按键绑定工作,颜色匹配等。 Can\xe2\x80\x99t 弄清楚,非常感谢任何帮助。

\n\n

硬件是运行最新版本的 raspbian 的 Raspberry Pi 4。

\n\n

〜/.tmux.conf:

\n\n
unbind C-b\nset-option -g prefix C-q\nbind-key C-q send-prefix\n\nbind h split-window \nbind v split-window -h\n\n#set-option -g pane-border-fg …
Run Code Online (Sandbox Code Playgroud)

bash ssh zsh tmux raspbian

2
推荐指数
1
解决办法
2068
查看次数

当我在终端中运行 tmux 时,登录时运行的后台脚本中断

~/.profile我在后台运行一个脚本(redshift用于在夜间更改屏幕温度)。

登录后,我可以打开一个终端,然后运行tmux.

然而,此时,随着屏幕温度的重置,红移明显被中断,并且似乎在这个终端中红移再次开始。

这里发生了什么事?我得到的印象~/.profile是针对每个 shell,并在运行 tmux 时再次解析。这可能吗?

terminal tmux shell-script

1
推荐指数
1
解决办法
371
查看次数

有没有办法让 Bash 脚本输入某个按键?

有没有办法让bash脚本输入某个按键?我在这里尝试完成的是一个脚本,该脚本将运行Ctrl+B退出tmux

编辑:我看到有几个人说最好使用特定于程序的命令。如果我想使用 bash 脚本编辑文本文件(在本例中为 bash_aliases 文件)怎么办?

bash tmux shell-script

1
推荐指数
1
解决办法
2231
查看次数

如何从 tmux 会话外部获取 tmux 会话菜单?

我正在尝试为 tmux 构建一个包装器,它向我显示所有可用会话的菜单,而不是创建一个新会话。但是手册页明确表示这是不可能的(摘自choose-tree命令):

此命令仅在至少连接了一个客户端时才有效。

我怎么能有一个 shell 函数/脚本来向我展示上面的菜单,但没有先进入 tmux?或者也许是一种快捷方式来附加并一次性显示选择器?

tmux

1
推荐指数
1
解决办法
781
查看次数

gnome-terminal :屏幕右侧的小间隙(Ubuntu)

我在 Ubuntu 上使用 gnome-terminal,当窗口很小(未最大化或全屏)时,我的 tmux 状态行和 ZSH 右侧提示符都会延伸到窗口的最右侧,这是完美的。

在此输入图像描述

然而,当最大化或全屏时,屏幕右边缘有一个小但令人讨厌的间隙。

在此输入图像描述

有什么办法可以解决这个问题吗?

(我知道这几乎微不足道;请保持友善!)

zsh tmux gnome-terminal

1
推荐指数
1
解决办法
1156
查看次数

如何重新设置我的登录 shell?

我在一个多用户登录节点上,这是一个大型国家生物信息学计算场的前端节点,运行 Linux。许多用户通过在登录节点上运行计算密集型作业而行为不端。我不。我想乖一点。事实上,我什至希望我的登录 shell 以良好的级别 4 运行,而不是默认的 0(零)。

重新使用登录 shell 的最方便和最简单的方法是什么?

我目前的设置:

我在一个或多个tmux会话中运行 ast-ksh (KornShell 93) 。系统上的默认 shell bash,但 I exec -l ksh93from~/.bash_profile然后我tmux从 my重新附加到任何正在运行的会话~/.profile,或者如果不存在则创建一个新的。

摘自~/.bash_profile:我什至不想bash用棍子触摸,所以我愿意用它做的就是拥有一个exec我喜欢的外壳。在这个系统上改变一个人的默认 shell 并不容易......

if [ -f $HOME/sw/bin/ksh93 ]; then
    exec -l $HOME/sw/bin/ksh93
fi
Run Code Online (Sandbox Code Playgroud)

片段来自~/.profile:我正在检测我是否已经在一个tmux会话中,如果我没有,并且我通过 SSH 登录,我将附加到或生成一个。

if [[ -z $TMUX ]]; then
    ssh-add

    if [[ -n $SSH_TTY ]]; then
        if tmux has-session 2>/dev/null; then
            exec tmux attach-session …
Run Code Online (Sandbox Code Playgroud)

login ksh tmux nice

1
推荐指数
1
解决办法
1595
查看次数

清除到行尾在 tmux 中使用了错误的背景颜色

在 ZSH 提示扩展中,命令 %E 应该是“清除到行尾”。

这有效: 在此处输入图片说明

但是,它在 tmux 中不起作用: 在此处输入图片说明

问题似乎与 BCE(背景颜色擦除)有关。在屏幕中,我可以添加选项defbce on。我找不到任何类似的 tmux 设置。它存在吗?

colors terminal tmux

1
推荐指数
1
解决办法
3125
查看次数

bash 脚本可以启动 tmux,将屏幕水平拆分 5 次并在每个中运行 watch -n1 tail -n5 吗?

是否可以制作一个 bash 脚本来启动 tmux 并水平拆分屏幕并watch -n1 tail -n5 file_n在每个脚本中运行?基本上,我多次启动脚本并将其进度写入我想监视的不同文件中。如果我可以从一个脚本运行它而不是自己手动打开 10 个文件,那就太好了。我从来没有使用过 tmux 顺便说一句,这就是我问这个的原因。

bash tmux

1
推荐指数
1
解决办法
1549
查看次数

从 tmux 会话中分离除当前终端之外的所有其他终端

有没有办法从正在运行的tmux会话中分离所有终端,除了我实际使用的终端?

看起来有点奇怪,但这样做的意义在于为最终用户远程会话保留一些“持久性”层,同时确保用户仅在“一个外壳”上使用系统。

正如解释在这里,人们很容易根据用户名创建会话:

if [[ "$TMUX" == "" ]] &&
        [[ "$SSH_CONNECTION" != "" ]]; then
    # Attempt to discover a detached session and attach
    # it, else create a new session
    WHOAMI=$(whoami)
    if tmux has-session -t $WHOAMI 2>/dev/null; then
    tmux -2 attach-session -t $WHOAMI
    else
        tmux -2 new-session -s $WHOAMI
    fi
fi
Run Code Online (Sandbox Code Playgroud)

但我也想确保最后一个连接的终端是唯一一个仍然连接到用户tmux会话的终端。

它有办法做到这一点吗?我也接受基于screen(或其他多路复用器)的解决方案;)

login gnu-screen tmux session

1
推荐指数
1
解决办法
6114
查看次数

Tmux 是否支持 Hyper 修饰键?

在我重新映射Caps Lock到的许多其他修改中Hyper,一个来自Space-cadet 键盘的古老修饰键 。

但是我找不到如何将它用于 Tmux 中的键绑定的示例,它具有类似 Emacs 的键绑定定义,例如C-k在它们两个中都定义了 Ctrl-k,所以我尝试了H-k在 Emacs 中完美运行的方法,但是作为事实证明,不是在 Tmux 中。

来自我的确切绑定定义 .tmux.conf

bind-key -T copy-mode H-k send-keys -X -N 30 scroll-down
Run Code Online (Sandbox Code Playgroud)

导致以下错误:

/home/attila/.tmux.conf:21: unknown key: H-k
Run Code Online (Sandbox Code Playgroud)

我知道有一个技巧可以将Hyper键模仿为同时按下所有其他修饰键,但是我使用xcape,所以这不是一个选项。

tmux

1
推荐指数
2
解决办法
1161
查看次数

标签 统计

tmux ×10

bash ×3

login ×2

shell-script ×2

terminal ×2

zsh ×2

colors ×1

gnome-terminal ×1

gnu-screen ×1

ksh ×1

nice ×1

raspbian ×1

session ×1

ssh ×1