it-swarm.com.de

Wie kann ich ein Programm von überall aus ausführbar machen?

Was soll ich tun, wenn ich ein bestimmtes Programm unabhängig von meinem aktuellen Verzeichnis ausführen möchte? Soll ich im Ordner /bin Einen symbolischen Link zum Programm erstellen?

79
aneuryzm

Wenn Sie nur export PATH=$PATH:</path/to/file> in der Befehlszeile dauert es nur für die Länge der Sitzung.

Wenn Sie es dauerhaft ändern möchten, fügen Sie export PATH=$PATH:</path/to/file> zu Ihrer ~/.bashrc-Datei (nur am Ende ist in Ordnung).

55
oadams

Die kurze Antwort lautet: Um das Programm auszuführen, müssen Sie unabhängig von Ihrem Verzeichnis das Programmverzeichnis in Ihrem Suchpfad haben. Das Problem kann gelöst werden, indem Sie das Programm in einen Ordner legen, der sich bereits in diesem Pfad befindet, oder indem Sie dem Pfad einen neuen Ordner hinzufügen - beides funktioniert. Die beste Antwort hängt ab von:

Ist dieses Programm ein heruntergeladenes Programm, das Sie selbst aus dem Quellcode zusammengestellt haben?

Es ist sehr wahrscheinlich, dass es bereits einen Installationsmechanismus gibt. Führen Sie in dem Ordner, in dem Sie das Programm kompiliert haben, als root 'make install' aus .

Ist dieses Programm ein heruntergeladenes Programm, das Sie als Teil der Standardprogramme auf dem Computer verfügbar machen möchten?

Es ist sinnvoll, diese Art von Anwendung in einem Standardordner abzulegen. Es ist durchaus üblich, Verzeichnisse wie/usr/local/bin für solche Programme zu verwenden. Dazu benötigen Sie Root-Zugriff.

Dies ist ein Programm, das Sie für sich selbst geschrieben haben und/oder das Sie keine besonderen Privilegien auf dem Computer haben.

Erstellen Sie in Ihrem Home-Verzeichnis einen Ordner mit dem Namen 'bin' und platzieren Sie das Programm dort. Möglicherweise müssen Sie Ihr Anmeldeskript bearbeiten, um den vollständigen Pfad zu diesem Ordner hinzuzufügen (z. B./usr/home/jeremy/bin) .

Während Sie einfach das aktuelle Verzeichnis zum Suchpfad hinzufügen können, müssen Sie dies mit jedem neuen Programm fortsetzen - und dies ist auf längere Sicht mehr Arbeit.

24
Michael Shaw

Das Platzieren eines Links zur Datei im Verzeichnis /bin Ist aus mehreren Gründen nicht das Beste.

  • Wenn sich die tatsächlich ausführbare Datei an einem Ort befindet, den einige Benutzer nicht sehen oder ausführen können, sehen sie dies als fehlerhaften Link oder als fehlerhaftes Programm.
  • Das Verzeichnis /bin Soll für Programme reserviert sein, die zum Ausführen des Systems erforderlich sind (z. B. chmod, mkdir usw.).

Sie können die ausführbare Datei tatsächlich in /usr/bin/ Oder sogar in /usr/local/bin/ Platzieren (installieren). Natürlich haben Sie das Programm zu diesem Zeitpunkt manuell installiert. Ihre Distribution wird es nicht so verfolgen wie die anderen Programme - Sie müssen es bei Bedarf manuell aktualisieren und manuell entfernen, wenn Sie möchten, dass es nicht mehr vorhanden ist. Außerdem müssen Sie wissen, von welchen Paketen es abhängt (es hört sich so an, als ob Sie das Programm bereits verwenden, also ist das erledigt, aber im Allgemeinen ...).

Wenn ich kein Programm einrichte, das andere Benutzer verwenden sollen, mache ich das normalerweise nicht: Ich erstelle ein bin-Verzeichnis nur für mich in meinem Home-Verzeichnis und bearbeite mein Shell-Profil, um ~/bin/ Hinzuzufügen. zu meiner Umgebungsvariablen PATH. Ich finde es einfacher, die Programme zu verfolgen, die ich auf diese Weise installiert habe, da sie vom Rest des Systems getrennt sind.

17
Shawn J. Goff

Wenn Sie einen Befehl foo in dem Verzeichnis ausführen möchten, in dem sich Ihre Shell gerade befindet, haben Sie grundsätzlich zwei Möglichkeiten:

  1. Art ./foo an der Shell-Eingabeaufforderung.

  2. Ergänzen Sie die . Verzeichnis (. ist ein Name für "das aktuelle Verzeichnis") für die Umgebungsvariable PATH; Wie Sie dies tun, hängt von der verwendeten Shell ab:

    • für Bourne-Shells (bash, zsh, ksh usw.), die Sie schreiben (siehe diese Seite für weitere Informationen):

      export PATH=$PATH:.
      
    • für csh-Shells (tcsh, csh), die Sie schreiben (siehe diese Seite für weitere Informationen):

      set path = ( $path .)
      

Beachten Sie, dass 2. ein Sicherheitsrisiko auf Mehrbenutzersystemen darstellt: Stellen Sie sich vor, Sie cd in das Verzeichnis /tmp und ein böswilliger Benutzer hat dort eine Malware-Binärdatei mit dem Namen ls erstellt.

6
Riccardo Murri

Wenn Sie mit PATH spielen, können Sie versehentlich Schadprogramme ausführen. Standardmäßig wird "lokales" Material unter /usr/local Installiert (siehe FHS , was die Unix-Verwendung kodifiziert: etwas veraltet, aber begründet). , /usr/local/bin Steht normalerweise für alle Benutzer im PATH.

Meine "lokal installierten" Programme befinden sich in $HOME/bin, Im Standardtanz von ./configure --prefix=$HOME ... Festgelegt, zusammen mit einigen (Bash-) Aliasnamen, die z. Selbstgebauter Git über dem System One (nicht kollidierende Git finden Sie ganz am Ende in PATH.

1
vonbrand