linux - 在远程计算机上通过 `ssh` 执行命令时未加载环境变量

标签 linux ssh

我想编写一个在远程服务器上执行多个命令的脚本,其中包括执行一些应用程序。 .bashrc远程计算机上的文件定义 PATH变量,以便这些应用程序位于其下。

但是当我尝试使用ssh <host> <command>时,看来.bashrc没有加载。 ssh <host> 'echo $PATH'只显示一些路径,如 /usr/bin .

更让我困惑的是,甚至ssh <host> "source ~/.bashrc; <command>"没有工作。 ssh <host> 'source ~/.bashrc; echo $PATH'仍然只打印了一些路径。我查过ssh <host> 'cat ~/.bashrc'并确认该文件确实包含所有 PATH定义,在命令执行的环境中不受影响。

最佳答案

经过两个小时的排查,我终于找到了问题所在。这是因为下面的命令以.bashrc开头.

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

这可以防止此后的任何事情在 ssh <host> <command> 环境中执行.

如果您遇到类似问题,请尝试检查 .bashrc 的开头文件。

关于linux - 在远程计算机上通过 `ssh` 执行命令时未加载环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69378214/

相关文章:

git - 怎么解决这个问题呢? ssh : connect to host github. com 端口 22:连接超时致命

linux - 使用公共(public) SSH key 连接到本地主机失败

c++ - Execvp 仅正确运行第一个命令

linux - 将 linux 根文件夹的子文件夹(/tmp、/lib、/etc)移动到另一个位置会影响系统吗?

linux - Bash - 设置 grep -rl 只返回文件名,而不是完整路径

linux - 等待零信号量操作的确切功能是什么?

c++ - 用于 ssh 和 scp 的面向对象的 C++ 库

linux - 使用ffmpeg drawtext作为rtl语言的问题

java - windows下下载远程文件到本地目录

r - 将textmate与通过ssh访问的应用程序一起使用