Wie kann ich bei Verwendung von SSH/SCP eine leere Umgebungsvariable PATH auf einem Remotecomputer reparieren?

Wie kann ich bei Verwendung von SSH/SCP eine leere Umgebungsvariable PATH auf einem Remotecomputer reparieren?

Bei der Verwendung von scp für einen Remotecomputer erhielt ich auf mysteriöse Weise den Fehler „sh: scp: Keine solche Datei oder kein solches Verzeichnis“:

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

Auch beim Versuch, die Umgebungsvariablen auf dem Remotecomputer nachzuschlagen, trat die Fehlermeldung „sh: env: Keine solche Datei oder kein solcher Verzeichnis vorhanden“ auf:

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

Aber als ich den vollständigen Pfad zur Umgebung verwendete, konnte ich sehen, dass PATH leer ist:

$ 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

Wenn ich mich jedoch per SSH bei der Maschine anmelde, ist der PATH nicht leer:

$ 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

Ich habe auch versucht, Root zu verwenden und bekomme dasselbe „sh: env: Keine solche Datei oder kein solches Verzeichnis“:

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

Wie kann ich die leere Umgebungsvariable PATH reparieren?

localhost ist macOS und remote ist BuildRoot (https://buildroot.org) auf einem Raspberry

Antwort1

Dies hängt mit der Einrichtung von Login-Shells und Nicht-Login-Shells zusammen. Normalerweise liest die Login-Shell von .profileund die Nicht-Login-Shell von .bashrc. Um dies zu beheben, müssen Sie dies PATHin diesen Konfigurationsdateien definieren.

Hier einige Referenzen und Erklärungen:

verwandte Informationen