小编Dyl*_*ali的帖子

'ssh <host> <command>' 可以配置为始终加载服务器端启动文件吗?

我想运行远程 ssh 命令并让它们默认加载服务器端启动文件。我要寻找一个解决方案要求:

  • 根目录配置
  • 每次向命令添加额外的样板
  • 跨多个文件复制环境变量

希望将本地环境变量传输到远程 shell。我想使用 vanillassh <host> <command>语法运行远程命令,并让它使用与远程登录会话相同的环境运行。

背景

以下假设bash用于简单起见

默认情况下,远程 ssh 命令启动一个非交互式、非登录的 shell。引用手册页:

如果指定了命令,它将在远程主机上执行,而不是在登录 shell 上执行。

您可以通过运行在 shell 上更明确地看到这一点:

# the lack of 'i' indicates non-interactive
$ ssh localhost 'echo $-'
hBc 

$ ssh localhost 'shopt login_shell'
login_shell     off
Run Code Online (Sandbox Code Playgroud)

但是如果您的远程命令需要设置某些环境变量怎么办?作为一个非交互式、非登录的 shell 意味着 .bash_profile不会也.bashrc不会被采购。

这是有问题的,例如,如果您使用perlbrewvirtualenv等工具并希望在远程命令中使用自定义解释器:

$ which perl
/home/calid/perl5/perlbrew/perls/perl-5.20.1/bin/perl

$ ssh localhost 'which perl'
/usr/bin/perl …
Run Code Online (Sandbox Code Playgroud)

bash ssh bashrc

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

在 linux 上是否有相当于“snoop -a”的东西?

Sun 的 snoop 命令提供了 -a 选项,因此您可以“侦听”音频设备上的数据包。是否有任何 Linux 数据包嗅探工具提供等效功能?

linux

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

标签 统计

bash ×1

bashrc ×1

linux ×1

ssh ×1