使用 ssh/scp 时,如何修复远程计算机上的空环境变量 PATH?

使用 ssh/scp 时,如何修复远程计算机上的空环境变量 PATH?

当使用 scp 连接到远程机器时,我神秘地收到错误“sh:scp:没有此文件或目录”:

$ scp [email protected]:test.txt .
Welcome to remotehost!
[email protected]'s password: 
sh: scp: No such file or directory

当尝试查看远程计算机上的环境变量时,它也失败并显示“sh:env:没有这样的文件或目录”:

$ ssh [email protected] env
Welcome to remotehost!
[email protected]'s password: 
sh: env: No such file or director

但是当使用完整路径来环境时,我可以看到 PATH 是空的:

$ ssh [email protected] "/usr/bin/env"
Welcome to remotehost!
[email protected]'s password: 
SSH_CONNECTION=192.168.1.7 62675 192.168.1.11 22
USER=admin
PWD=/root
HOME=/root
SSH_CLIENT=192.168.1.7 62675 22
MAIL=/var/mail/admin
SHELL=/bin/sh
SHLVL=1
LOGNAME=admin
PATH=
_=/usr/bin/env

但是如果我通过 ssh 登录到机器,PATH 不为空:

$ ssh [email protected]
Welcome to remotehost!
[email protected]'s password: 
[root@ remotehost ~]# env
HOSTNAME= remotehost
EDITOR=/usr/bin/nano
USER=root
PAGER=/usr/bin/less
INPUTRC=/etc/inputrc
PWD=/root
HOME=/root
SSH_CLIENT=192.168.1.7 62724 22
SSH_TTY=/dev/pts/0
MAIL=/var/mail/admin
TERM=linux
SHELL=/bin/sh
SHLVL=1
LOGNAME=root
PATH=/bin:/sbin:/usr/bin:/usr/sbin
PS1=[\u@\h \W]\$ 
HISTSIZE=1000
HISTFILESIZE=1000
_=/usr/bin/env

我也尝试使用 root 并得到相同的“sh:env:没有这样的文件或目录”:

$ ssh [email protected] env
Welcome to remotehost!
[email protected]'s password: 
sh: env: No such file or directory

我该如何修复空的环境变量 PATH?

localhost 是 macOS,remote 是 BuildRoot (https://buildroot.org) 在树莓派上

答案1

这与登录 shell 和非登录 shell 设置有关。通常,登录 shell 将从 读取.profile,而非登录 shell 将从 读取.bashrc。要修复此问题,您需要PATH在这些配置文件中定义 。

以下是一些参考和解释:

相关内容