使用 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

但是當使用 env 的完整路徑時,我可以看到 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,遠端是 BuildRoot (https://buildroot.org)在覆盆子上

答案1

這與登入 shell 和非登入 shell 設定有關。通常,登入 shell 將從 讀取.profile,非登入 shell 將從 讀取.bashrc。要修復它,您需要PATH在這些設定檔中定義。

以下是一些參考資料和解釋:

相關內容