Unter Linux gibt es mehrere Arten, Anwendungen zu starten – grafische Anwendungen finden sich im Anwendungsmenü, wenn der Entwickler dies so vorgesehen / nicht vergessen hat. Eine weitere Möglichkeit findet sich über den Schnellstarter (Alt+F2, unter KDE auch mit Alt+Leertaste), oder eben auch über das Terminal.
Laden Sie eine ausführbare Datei (eine binäre Datei oder auch ein Script, ein Appimage …) herunter, muss diese Datei natürlich erst einmal ausführbar sein – dies gelingt per Rechtsklick auf die Datei „Eigenschaften → Berechtigungen“ oder am Terminal mit:
chmod +x dateiname
Liegt die Datei jetzt in einem beliebigen Verzeichnis, müssen Sie entweder auf dem Terminal in das Verzeichnis wechseln, in dem die Datei liegt – also etwa zu Downloads:
cd Downloads/
Anschließend lässt sich die Datei auf dem Terminal wie folgt starten – im Beispiel nennt sich die Datei „dateiname„:
./dateiname
Wollen Sie nicht in das Verzeichnis wechseln, in dem die Datei liegt, müssen Sie den Pfad zur Datei angeben – also nach obigem Beispiel:
Downloads/dateiname
Ah, und ja, warum lassen sich jetzt gewisse Befehle auf dem Terminal starten, ohne den Pfad zur Datei anzugeben? Nehmen wir jetzt einmal den Befehl:
ls
Befehle, Programme, ausführbare Dateien, die Sie etwa über den Paket-Manager der Distribution installieren, legt das System automatisch in einem Verzeichnis ab, in dem das Terminal nach ausführbaren Dateien sucht. Ist dies nicht der Fall, werden entsprechende Dateien nicht gefunden – und Sie müssen dann den Pfad zur Datei angeben.
Hier ein paar Beispiele für Verzeichnisse, in denen die Shell – also das Terminal nach ausführbaren Dateien sucht:
- /bin
- /sbin (root)
- /usr/bin
- /usr/local/bin
- /usr/games
- /usr/local/games
Ein weiteres Verzeichnis, in dem oft ausführbare Dateien liegen, wäre „/opt„. Dieses Verzeichnis wird aber deshalb nicht genutzt, weil darunter, wie der Name schon sagt, optionale Software liegt. Solche Software wird in entsprechenden Unterverzeichnissen dort gespeichert – mit Unterverzeichnissen kann die Shell aber nichts anfangen.
Anwendungen, Befehle, die in den oben genannten Verzeichnissen stehen, lassen sich hingegen auf dem Terminal starten, ohne den Pfad anzugeben – statt etwa:
/bin/ls
zu nutzen, genügt also ein einfaches:
ls
Jetzt gibt es aber so einige Paket-Manager, die nicht zur Distribution gehören und ihre Pakete in Verzeichnissen ablegen, in denen die Shell nicht nach ausführbaren Dateien sucht. Beispielsweise:
- Go – /home/username/go/bin
- Rust (Cargo) – /home/username/.cargo/bin
- Python (Pip, Pipx) – /home/username/.local/bin
Jetzt müssten Sie, um darin liegende ausführbare Dateien auf dem Terminal zu starten, den Pfad zu diesen angeben – nein, müssen Sie nicht. Sie müssen dem Terminal nur zeigen, wo ausführbare Dateien liegen. Dies geben Sie in der Konfigurationsdatei der genutzten Shell an. Für die Bash ist dies die Datei „/home/username/.bashrc„, für die Z-Shell (Zsh) „/home/username/.zshrc„. Diese Datei öffnen Sie mit einem beliebigen Texteditor und legen am Ende der Datei eine neue Zeile an, diese beginnt mit:
PATH=""
Unter doppelten Anführungszeichen geben Sie jetzt die entsprechenden Pfade an – am besten gleich alle des Systems und eben auch die Verzeichnisse, in denen sich zusätzliche ausführbare Dateien befinden. Ein Pfad wird vom anderen durch einen Doppelpunkt getrennt. Beginnen wir ganz einfach mit dem Verzeichnis „/bin„:
PATH="/bin"
Da es sich um ein Systemverzeichnis handelt, genügt der Slash „/„. Jetzt fügen wir etwa „/usr/local/bin“ hinzu – wir müssen unterschiedliche Pfade durch einen Doppelpunkt trennen:
PATH="/bin:/usr/local/bin"
Und jetzt geben wir etwa das Rust-Verzeichnis „.cargo/bin“ an – es handelt sich um kein Systemverzeichnis, Sie müssen also den kompletten Pfad durch Ihr Home-Verzeichnis angeben:
PATH=/bin:/usr/local/bin:/home/username/.cargo/bin"
„username“ müssen Sie natürlich durch den Ihren ersetzen. Anschließend laden Sie die Konfiguration der Shell neu oder starten diese neu:
source ~/.bashrc
source ~/.zshrc
Dies funktioniert natürlich auch mit selbst erstellten Scripts, die Sie etwa unter „/home/username/Scripts“ ablegen – ganz einfach, mit allen ausführbaren Dateien.
7 Reaktionen
Danke, Robert, dieser Beitrag war schon lange fällig, super, einfach gut.
Für eingefleischte Linux-User erzeugt übrigens die folgende Möglichkeit, Programme ausnahmsweise aus irgendeinem Verzeichnis zu starten, wohl ein Naserümpfen, aber für Einsteiger ist sie verführerisch einfach:
Man zieht die heruntergeladene Datei einfach mit gedrückter linker Maustaste aus diesem Verzeichnis im Dateimanager ins Terminal – das geht nicht bei jedem Terminal, aber z.B. beim xfce4-terminal geht es gut. Dann drückt man Enter – und das Programm startet. Dabei muss man sich überhaupt nicht darum kümmern, ob es irgendwo im Pfad Lücken gibt usw., weil mit der Eingabe alles automatisch in Anführungszeichen eingeschlossen wird.
Ein Beispiel:
1. Das AppImage OnlyOffice-x86_64.AppImage (muss ausführbar sein, siehe oben bei chmod) von einem Dateimanager ins Terminal ziehen, dort sieht es dann so aus:
rocki@lenovo:~$ ‚/home/rocki/Downloads/Software/OnlyOffice-x86_64.AppImage‘
2. Enter drücken – und OnlyOffice startet.
Natürlich sollte man danach das Terminal nicht schliessen, sonst wird OnlyOffice auch geschlossen. Mit & disown kann das Terminal aber geschlossen werden und das Programm (hier OnlyOffice) bleibt offen:
rocki@lenovo:~$ ‚/home/rocki/Downloads/Software/OnlyOffice-x86_64.AppImage‘ & disown
Fügt man auch noch & exit hinzu, wird das Terminal nach dem Programmstart automatisch geschlossen, das Programm (OnlyOffice) bleibt aber offen:
rocki@lenovo:~$ ‚/home/rocki/Downloads/Software/OnlyOffice-x86_64.AppImage‘ & disown & exit
Man tut, was man kann. Im Augenblick gehen mir aber leider noch drei Bücher im Kopf herum – Ubuntu Aktualisierung, dann folgt Mint und anschließend Anonym und sicher im Internet mit Linux. Zu Ubuntu 24.04 fehlt zumindest nur noch ein Rest – nicht viele Neuerungen 🙂
@robertgoedl: Ich meinte nur, dass der Beitrag der Linux-Bibel gefehlt hat. War wirklich kein Vorwurf.
Dein Buch „Debian 12“ habe ich mir übrigens als PDF besorgt. Weiter so, aber übertue dich nicht.
Besser wäre den Inhalt der Variablen $PATH nicht zu überschreiben, sondern zu ergänzen. z.B.
export PATH=$PATH:~/bin
@Willi: Wo überschreibt Robert etwas?
Was du zeigst: Wenn du per Terminal export PATH=“$PATH:Pfad/zum/Verzeichnis“ ausführst, fügst du das Verzeichnis Pfad/zum/Verzeichnis zum bestehenden Wert von $PATH hinzu. Das export-Kommando macht diese Änderung für nachfolgende Prozesse sichtbar, sodass du danach Programme aus diesem Verzeichnis ausführen kannst, ohne den kompletten Pfad angeben zu müssen. Der Test erfolgt mit echo $PATH.
Übrigens kann man auch schreiben: export PATH=“Pfad/zum/Verzeichnis:$PATH“ Dann wird das hinzugefügte Verzeichnis im Gegensatz zum obigen Befehl als erstes Verzeichnis aufgeführt – das lässt sich mit echo $PATH leicht kontrollieren.
Und was Robert hier zeigt: Weil der export-Befehl nur eine Änderung für die aktuelle Terminal-Sitzung bewirkt, braucht es die Bearbeitung der Konfigurationsdateien .bashrc oder .bash_profile (natürlich inkl. Speichern und source ~/.bashrc, wenn man nicht gleich das Terminal schliesst oder runterfährt), um die Änderung dauerhaft zu machen.
Ihr ergänzt euch also.
@Rocky
Robert fängt mit
PATH=““
also einer leeren Variablen an und vervollständigt dann Stück für Stück, was bereits über /etc/profile belegt war.
Ich hatte mich nur kurz gefasst. Natürlich sollte auch mein Eintrag in die persönliche Konfigurationsdatei eingefügt werden und mit
source ~/.bashrc
für die aktuelle Sitzung gültig gemacht werden.
Die Linux-Bibel ist, vor allem dank Roberts Arbeit, die beste deutsche Seite zu Linux.
[…] besten Fall sehen Sie sich noch den Artikel rund um Verzeichnisse für ausführbare Dateien […]