小编Rya*_*Lue的帖子

`ssh <host>` 是登录 shell,而 `ssh <host> <command>` 不是?

我注意到,当我使用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

我得出了以下结论:

  1. ssh <host>仅来源.bash_profile,而
  2. ssh <host> <command>仅来源.bashrc,这意味着
  3. 前者是登录shell,后者不是。

这些结论是否正确?为什么被ssh <host> <command>视为交互式、非登录 shell?SSH不是还在登录远程机器执行命令吗?

linux ssh bash bashrc .bash-profile

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

为 tmux 创建“焦点模式”?(一个居中的窗格两侧是两个空白窗格?)

我想使用 tmux 为终端创建一个“焦点模式”,有点像goyo 为 vim 所做的

goyo 截图

问题 1:调整窗格大小

我的想法是通过将窗口分成三个窗格来实现这一点,然后将中心窗格设置为固定的最大值(可能是 80 列?可能是 100?可能根据终端窗口大小不同的最大值,例如响应式 Web 布局?)并设置侧窗格以平均填充剩余的列。我还希望它可以在不同尺寸的屏幕上工作,这样我就可以在我的笔记本电脑和台式机上使用它。

目前,我能想到的唯一方法是与 shell 合作(即,获取终端宽度,tput cols然后使用数学运算计算每个窗格所需的宽度$(()))。我对此没有意见,但是如果在 tmux 中有一种内置方法可以完成此操作,我会因为错过它而感到非常愚蠢。

所以……有吗?

问题 2:消隐侧窗格

这不太重要;看到顶部有提示的大部分空白窗格确实还不错。我知道 tmux 有clock-mode(例如),它会覆盖窗格的内容并显示其他内容。所以我想知道是否有办法完全隐藏非活动窗格的内容。到目前为止,我能想到的最好的方法是将 fg 和 bg 设置为相同的颜色

:select-pane -t:.1 -P 'fg=black,bg=black'
Run Code Online (Sandbox Code Playgroud)

或者,圣杯

如果tmux 中的窗格有边距功能,那么这一切都可以更轻松地完成。据我所知,此功能不存在,但我远非 tmux 专家。有没有可能它在那里而我只是不知道它?

terminal bash tmux

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

标签 统计

bash ×2

.bash-profile ×1

bashrc ×1

linux ×1

ssh ×1

terminal ×1

tmux ×1