Export PATH - funktioniert nur bis zum nächsten logout

Hallo,

seit dem Umstieg auf Manjaro habe ich festgestellt, dass ein

export PATH="$PATH:$HOME/.local/share/programm_ordner"

nur zeitweise zu funktionieren scheint.
Ist das ein Manjaro-spezifisches Verhalten?

Und wie mache ich den neuen Pfad persistent/dauerhaft?

Ich habe im Arch-Wiki gelesen, dass man den Pfad in die .bashrc eintragen kann. Hier ist das genannte Beispiel:

export PATH=$PATH:/home/user/scripts

Doch es wird ebenfalls gesagt:

Man setzt hiermit PATH neu, und zwar zuerst mit dem aktuellen Inhalt dieser Variablen, und dann, durch Doppelpunkt getrennt, mit dem zusätzlichen Pfad.

Ich muss also alle bisherigen Pfade + den neuen in die .bashrc eintragen, richtig?

Aber genauso sehr interessiert mich die zu Eingang gestellte Frage: Warum funktioniert export PATH nicht dauerhaft?

Hallo @fabio :wink:

Klaro funktioniert das nur für die aktuelle Terminal-Sitzung. Schließt du das Fenster, dann ist es weg.

Im Grunde reicht:

PATH=$HOME/.local/share/programm_ordner:$PATH

Du willst doch das zuerst in deinem Ordner gesucht wird und dann im globalen Pfad? Es ist nämlich so: wenn 2 gleiche Dateinamen im lokalen und globalen Pfad existieren, dann nimmt der immer den Ersten, der gefunden wurde.

Ich nehme mal an du nutzt ZSH und nicht BASH. Einfach mal prüfen:

echo $SHELL

Dann entsprechend in ~/.zshrc oder ~/.bashrc eintragen.
Nach dem eintragen einfach die config laden:

source ~/.zshrc
source ~/.bashrc

oder Terminal schließen und öffnen.

PS: Allerdings ist share nicht für Binär-Dateien gedacht. Erstelle lieber einen Ordner bin:

mkdir -pv ~/.local/bin
echo "PATH=\$HOME/.local/bin:\$PATH" >> ~/.zshrc
echo "PATH=\$HOME/.local/bin:\$PATH" >> ~/.bashrc
1 Like

Hatte ich auf Ubuntu, meine ich, nicht so. Ich habe den Befehl einmal ausführen lassen und konnte danach das Programm immer direkt aus dem Terminal starten. Und ehrlich gesagt, ein von mir selbst geschriebenes Shell-Script, das ich in /usr/bin/ abgelegt und zu /usr/local/bin/ verlinkt und mit

export PATH="$PATH:/usr/local/bin/Name_des_Scriptes.sh"

verfügbar gemacht habe, funktioniert auch nach einem Neustart.

Aber gut, dann trag ich es in die .bashrc ein.

echo $SHELL:

/bin/bash

Ich nutze wohl bash :slight_smile:

Ich hatte gelesen, dass es anders herum sicherer ist, falls der nachfolgende Befehl dem vorangegangenen - fürs System wichtigeren - Befehl gleicht. Ist in diesem Fall zwar nicht relevant, das Programm gibt es sicher kein zweites mal unter dem Namen (yabridge). Aber ich dachte anders herum wäre die richtigere Art und Weise. Steht ja eigentlich auch so im Arch-Wiki.

Ok, das müsste ich ausprobieren. Ich bin mir auch gar nicht sicher, ob es eine Binär-Datei ist. Auf der Github-Seite wird eben genau dieser Ordner als Ort zum entpacken angegeben. Ich weiß nicht ob das Programm (ist von wine abhängig) relative Pfade nutzt, die dann vielleicht nicht mehr aufzulösen wären. Wie gesagt, müsste ich ausprobieren.

Aber du bestätigst was ich mit der Frage meinte, ich muss also den kompletten Inhalt + den neuen Pfad in die .bashrc eingeben. Einfach ganz ans Ende nehme ich mal an, richtig?

Und danke auch für die Vereinfachung durch die Variable $PATH. Ich hätte jetzt den ganzen Inhalt der Variable kopiert.

Diese Pfade sind bereits voreingestellt. Deine Eingabe war eher sinnfrei.

echo $PATH

Es wäre ehrlich gesagt ziemlich sinnfrei, das anders herum zu machen. Wenn ich zum Beispiel firefox überscrheiben will, dann erstelle ich ein Script mit den Name firefox in meinem Home folder. Wenn das umgekehrt wäre, dann hätte das keinen Sinn.

Jeder macht es wie man will. Eigentlich sollten da nur Dateien, die unabhängig von der Architektur und nur lesbar sind drin sein, aber Steam macht ja auch was es will.

1 Like

Ich meine zwar, dass das Script erst nach dem Export direkt aus dem Terminal funktionierte, bin mir aber nicht sicher. Gut zu wissen. Dann kann ich mir das nächstes mal sparen :slight_smile:

Im Arch-Wiki war nicht die Rede von absichtlichem Überschreiben, sondern eher, wenn man ein Programm unwissend gleich benennt wie ein bestehendes. Das Beispiel war in dem Fall glaube ich ls.

Ich danke dir aber für deine Antworten. Ich hab es zwar noch nicht in die .bashrc eingetragen - das mache ich morgen, wenn ich wieder richtig wach bin :slight_smile: - aber ich denke mal ich kann deine erste Antwort getrost als Lösung eintragen.

Danke nochmal!

Perfekt. Hab es gestern zwar noch in die .bashrc eingefügt, aber heute kann ich mit Sicherheit sagen, dass alles geklappt hat.

Habe den Pfad aber trotzdem ans Ende angehängt, weil ich das in dem Fall für stimmig halte (in anderen Fällen ist natürlich alleine der von dir beschriebene Ansatz sinnvoll).

Und ich habe gestern nochmal genaustens auf der Github Seite nachgelesen, und eigentlich steht da auch, dass man es der .bashrc anfügen soll :slight_smile: Also hatte ich das in meiner alten Ubuntu-Installation sicherlich so gemacht und einfach vergessen.

Also sorry dafür. Aber vielen Dank nochmal für die schnelle Hilfe und die Erläuterungen.

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.