我已经在远程计算机的“.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,因此下面的任何内容都不会运行。