SSH远程命令不读取所有环境变量

5 ssh bash git

我已经在远程计算机的“.bashrc”文件中声明了一些“PATH”变量。当我登录到远程计算机时,所有这些“PATH”变量都工作正常。但是当我执行“ssh user@remote env”时,不会读取“.bashrc”中声明的“PATH”。我怎样才能解决这个问题?

这是远程计算机主目录中的“.bash_profile”:

# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

# User specific environment and startup programs
PATH=$PATH:$HOME/bin:

export PATH
Run Code Online (Sandbox Code Playgroud)

这是远程计算机主目录中的“.bashrc”:

# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi

# PATH
export PATH=$HOME/git-1.8/bin/:$PATH
Run Code Online (Sandbox Code Playgroud)

这是我本地计算机上命令“ssh user@remote env”的当前输出:

SHELL=/bin/bash
SSH_CLIENT=NNNNNNNNNNNNNNN
USER=XXXXXXXXX
MAIL=/var/mail/XXXXXXXX
PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/openssh/bin
PWD=/volume2/home/hp120242/XXXXXXXXX
SHLVL=1
HOME=/home/hp120242/XXXXXXXXXX
LOGNAME=XXXXXXXXXXXXX
SSH_CONNECTION=NNNNNNNNNNNNNNNNNNN
LC_CTYPE=en_US.UTF-8
_=/bin/env
Run Code Online (Sandbox Code Playgroud)

我没有遥控器的 root 权限。

小智 1

请参阅这个答案:SSH not read rc files


.bash_profile运行命令时不会执行,因为 SSH 不执行登录 shell,而是执行命令。您可以尝试设置环境变量,~/.ssh/environment但该文件的读取可能已被禁用。

您可以尝试通过以下方式强制登录 shell:ssh user@host bash -lc env

正如其他人提到的,.bashrc在运行命令时应该阅读。您能否通过echo EXECUTED在..bashrc

也有可能是其中的任何内容都/etc/bashrc在调用exit,因此下面的任何内容都不会运行。