Linux 在ssh命令中使用远程服务器的环境变量

Linux 在ssh命令中使用远程服务器的环境变量,linux,shell,ssh,Linux,Shell,Ssh,我有两台服务器X(主机)和Y(远程)。脚本abc.sh保存在Y服务器上。我正在使用ssh命令从服务器X运行abc.sh 脚本正在成功运行,但包含服务器Y的环境变量(保存在/.bash\u概要文件中)的命令将提供空白输出 当我从服务器Y本身运行abc.sh时,所有命令都会成功运行 我的问题是如何包含远程服务器(Y)的环境变量,以便成功执行完整的脚本 注意:我没有对etc目录的写权限,所以我不能更改其中的任何内容 提前谢谢 您可以包括以下环境变量: ssh user@host_y 'source ~

我有两台服务器X(主机)和Y(远程)。脚本abc.sh保存在Y服务器上。我正在使用ssh命令从服务器X运行abc.sh

脚本正在成功运行,但包含服务器Y的环境变量(保存在/.bash\u概要文件中)的命令将提供空白输出

当我从服务器Y本身运行abc.sh时,所有命令都会成功运行

我的问题是如何包含远程服务器(Y)的环境变量,以便成功执行完整的脚本

注意:我没有对etc目录的写权限,所以我不能更改其中的任何内容


提前谢谢

您可以包括以下环境变量:

ssh user@host_y 'source ~/.bash_profile; /path/to/your/script/abc.sh'

由于direct command run不是交互式shell,因此您的变量将无法在其中工作
source
将在当前shell中运行脚本,并将该文件中的环境变量显示到脚本中。

我使用ssh连接远程计算机来运行一些cron作业。代码无法加载所有环境变量。如果我在那台机器上运行代码就行了。 我尝试了几种不适合我的方法。 最后,我在
~/.bashrc
文件的下面几行注释。它对我有用

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac
ssh连接打开一个无交互shell。因此,如果您注释或删除此块代码,它将加载非交互式shell的环境变量


或者,您可以将所有必需的环境行代码放在该行上方。

可能重复的“否”,我在其中找不到我的答案,这就是为什么要单独询问。为什么不。你完整地读了吗?例如:“当bash作为交互式登录shell调用时,或者作为带有--login选项的非交互式shell调用时,它首先读取并执行文件/etc/profile中的命令(如果该文件存在的话)”。也就是说,您是否尝试将env值放入/etc/profile中?还有其他几个建议——你是否尝试了所有建议,但没有一个对你有效?如果是这种情况,您需要说明您尝试了什么以及为什么它们不适合。我不是服务器的超级用户,因此我在etc目录中没有写权限。这就是为什么链接上的大多数解决方案对我不起作用的原因。嗯,这是一个相当重要的约束,对吗?建议把它放到你的问题中。谢谢你的回答。ssh$username@$server“source$REMOTE\u HOME/.bash\u profile”ssh$username@$server“sh$REMOTE\u HOME/users/prasoon/env\u var.sh”我已经尝试过了,但在执行时出现了以下错误,因此对我来说不起作用。stty:标准输入:无效参数非常感谢。我工作过。这是我的错误。当您不是服务器的超级用户时,这是最好的解决方案。