In meinem habe ~/.profile
ich einen letzten Block, der mein persönliches bin/ directory
so laden soll :
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Aber es ist scheinbar nicht geladen:
echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Warum funktioniert das nicht? (Meine Shell ist Bash.)
Für Tigger bearbeiten
echo $0 => bash
echo $HOME => /home/student
whoami => student
less /etc/*-release =>
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
.profile
finden Sie unter askubuntu.com/questions/284640 .-x
das an bash übergebene Flag verwenden und sehen, wo der PATH zurückgesetzt wird. Außerdem müssen Sieexport PATH="$HOME/bin:$PATH"
es für nachfolgende Prozesse bereitstellen.Antworten:
Von oben
~/.profile
:Also (wenn Sie
bash
als Shell verwenden) Ich vermute entweder~/.bash_profile
oder~/.bash_login
ist auf Ihrem System. Wählen Sie eine aus und bearbeiten Sie sie so, dass sie Folgendes enthält:Speichern und /
source ~/.bash_login
oder abmelden und erneut anmelden.Bearbeiten :
Sie sagen, dass beide
~/.bash_profile
und~/.bash_login
beide in Ihrem fehlen$HOME
. Ich denke, wir müssen ein paar Dinge bestätigen. Bitte posten Sie die folgenden Ergebnisse in Ihrer ursprünglichen Frage:Bearbeiten 2 :
Persönlich weiß ich
~/.profile
aufgrund der bereitgestellten Informationen und Unterlagen nicht, warum in Ihrem Fall nicht enthalten ist. Beim Testen habe ich festgestellt, dass meine beim~/.profile
Einscannen gescannt wird,ssh
aber nicht, wenn ich ein neues Terminal starte.Es gibt jedoch eine einfache Lösung,
$HOME/bin
mit der Sie in Ihre interaktive Shell aufgenommen werden können. Bearbeiten (erstellen, falls nicht vorhanden)~/.bashrc
und fügen Sie die folgende Zeile hinzu:Speichern, abmelden und wieder anmelden oder
source ~/.bashrc
.Die
export
Zeile kann erweitert werden, um zu überprüfen,$HOME/bin
ob sie vorhanden ist, wenn Sie möchten mit:Warum
~/.bashrc
statt einer anderen Datei? Persönliche Präferenz und scheint auch zuverlässiger zu sein.quelle
~/.bash_profile
noch~/.bash_login
. Bei mir~
gibt es nur.bash_history
und.bash_logout
(und natürlich die.profile
).~/.profile
übersprungen wird.Die Regeln für In-Sourcing-Shell-Startdateien sind komplex . Es ist wahrscheinlich, dass Ihr Setup
.profile
nicht berücksichtigt wird, wenn Sie ein neues Terminal innerhalb einer X-Sitzung öffnen (versuchen Sie, einecho .profile
Inside-In zu platzieren,.profile
und prüfen Sie, ob die Meldung beim Starten einer Shell angezeigt wird).sollte das Profil manuell neu laden.
Das An- und Abmelden von X sollte ebenfalls
.profile
zum Laden führen.Alternativ können Sie
. $HOME/.profile
von.bashrc
(während Sie einen variablenbasierten Schutz verwenden, um eine doppelte Einbeziehung zu verhindern) sicherstellen, dass er.profile
immer enthalten ist, wenn Sie eine Shell starten.(Dies sollte nicht erforderlich sein,
export PATH
daPATH
es sich bereits um eine exportierte Variable handelt. Wenn Sie ihren Wert ändern, ändert sich ihrexport
Status nicht.)quelle
[ -z "$has___profile" ] || return; has__profile=1
), damit ich keine Endlosschleifen bekomme und beides.profile
und.bashrc
(nur wenn BASH_VERSION definiert ist) egal wie ich dorthin gekommen bin.bash -l
wird geladen.profile
(es sei denn, eine ungerade Konfiguration). Außerdem sollte der PFAD korrekt eingestellt sein, wenn sich der Benutzer anmeldet. Dies bedeutet, dass im verwendeten "Display Manager" (dm) Gnome, KDE, xfce, lxde usw. verwendet werdenWenn Sie
.profile
geladen werden möchten, müssen Sie lediglich eine Login-Shell starten:Das sollte für eine laufende Sitzung ausreichen. Sie können den PFAD vor und nach dem Start einer Anmelde-Bash vergleichen, um den Unterschied zu bestätigen.
Für eine dauerhaftere Lösung muss eine Anmeldeshell irgendwann vor dem Start Ihres Terminals (Konsole) gestartet werden. Die Anmeldung als bestimmter Benutzer erfolgt auf einem dm (Display Manager) (gnome, kde, xfce, lxde usw.). Es sollte die Aufgabe eines jeden von ihnen sein, die Umgebungsvariable PATH an Ihre Bedürfnisse anzupassen.
Für xfce besteht die Lösung beispielsweise darin, Folgendes zu ändern
xinitrc
:Für Gnome scheint es, dass die zu ändernde Datei ist
~/.pam_environment
.Befolgen Sie für KDE diese Anleitung , um die Datei zu erstellen. Sie können diesen Code verwenden:
quelle