我注意到,当我使用ssh <host> <command>语法直接在 SSH 主机上运行命令时,我看到的是输出,.bashrc但没有看到.bash_profile(或.profile)的输出。
例如,如果我将以下命令放在两个文件的顶部,
echo ${BASH_SOURCE[0]}
Run Code Online (Sandbox Code Playgroud)
和手动来源.bash_profile(.bashrc依次来源),我会看到
$ . .bash_profile
.bash_profile
.bashrc
Run Code Online (Sandbox Code Playgroud)
这与我使用ssh <host>命令的形式通过 SSH 远程登录到这台计算机时看到的输出相同。(如果我.bash_profile暂时存放在其他地方,这两行都不会得到回应。)
但是,如果我直接在远程机器上以ssh <host> <command>形式执行命令ssh,则输出如下所示:
$ ssh <host> echo foo
/home/rlue/.bashrc
foo
Run Code Online (Sandbox Code Playgroud)
我的理解是,之间的区别.bash_profile,并.bashrc就在于前者是登录shell而后者则是互动的,非登录shell。
我得出了以下结论:
ssh <host>仅来源.bash_profile,而ssh <host> <command>仅来源.bashrc,这意味着这些结论是否正确?为什么被ssh <host> <command>视为交互式、非登录 shell?SSH不是还在登录远程机器执行命令吗?
我想使用 tmux 为终端创建一个“焦点模式”,有点像goyo 为 vim 所做的:
我的想法是通过将窗口分成三个窗格来实现这一点,然后将中心窗格设置为固定的最大值(可能是 80 列?可能是 100?可能根据终端窗口大小不同的最大值,例如响应式 Web 布局?)并设置侧窗格以平均填充剩余的列。我还希望它可以在不同尺寸的屏幕上工作,这样我就可以在我的笔记本电脑和台式机上使用它。
目前,我能想到的唯一方法是与 shell 合作(即,获取终端宽度,tput cols然后使用数学运算计算每个窗格所需的宽度$(()))。我对此没有意见,但是如果在 tmux 中有一种内置方法可以完成此操作,我会因为错过它而感到非常愚蠢。
所以……有吗?
这不太重要;看到顶部有提示的大部分空白窗格确实还不错。我知道 tmux 有clock-mode(例如),它会覆盖窗格的内容并显示其他内容。所以我想知道是否有办法完全隐藏非活动窗格的内容。到目前为止,我能想到的最好的方法是将 fg 和 bg 设置为相同的颜色:
:select-pane -t:.1 -P 'fg=black,bg=black'
Run Code Online (Sandbox Code Playgroud)
如果tmux 中的窗格有边距功能,那么这一切都可以更轻松地完成。据我所知,此功能不存在,但我远非 tmux 专家。有没有可能它在那里而我只是不知道它?