GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie fügt man sauber zu $path hinzu?

Ich hätte gerne eine Möglichkeit, Dinge zu $PATH hinzuzufügen, systemweit oder für einen einzelnen Benutzer, ohne möglicherweise denselben Pfad mehrmals hinzuzufügen.

Ein Grund dafür ist, dass Ergänzungen in .bashrc vorgenommen werden können , das keine Anmeldung erfordert und auch auf Systemen nützlicher ist, die (z. B.) lightdm verwenden , die niemals .profile aufruft .

Mir sind Fragen bekannt, die sich mit der Bereinigung von Duplikaten aus $PATH befassen, aber ich möchte keine Duplikate entfernen . Ich hätte gerne eine Möglichkeit, Pfade hinzuzufügen, wenn sie noch nicht vorhanden sind.

Akzeptierte Antwort:

Angenommen, der neue Pfad, den wir hinzufügen möchten, lautet:

new=/opt/bin

Dann können wir unter Verwendung einer beliebigen POSIX-Shell testen, ob new befindet sich bereits im Pfad und fügen Sie es hinzu, wenn dies nicht der Fall ist:

case ":${PATH:=$new}:" in
    *:"$new":*)  ;;
    *) PATH="$new:$PATH"  ;;
esac

Beachten Sie die Verwendung von Doppelpunkten. Ohne die Doppelpunkte könnten wir denken, dass dies beispielsweise new=/bin ist war bereits im Pfad, da das Muster auf /usr/bin passte . Während PATHs normalerweise viele Elemente haben, werden auch die Sonderfälle von Null- und Eins-Elementen im PATH behandelt. Der Fall, dass PATH anfänglich keine Elemente hat (leer ist), wird durch die Verwendung von ${PATH:=$new} gehandhabt die PATH zuweist zu $new wenn es leer ist. Das Festlegen von Standardwerten für Parameter auf diese Weise ist ein Merkmal aller POSIX-Shells:siehe Abschnitt 2.6.2 der POSIX-Dokumentation.)

Eine aufrufbare Funktion

Der Einfachheit halber kann der obige Code in eine Funktion eingefügt werden. Diese Funktion kann auf der Befehlszeile definiert oder, um sie dauerhaft verfügbar zu haben, in das Initialisierungsskript Ihrer Shell eingefügt werden (für Bash-Benutzer wäre das ~/.bashrc ):

pupdate() { case ":${PATH:=$1}:" in *:"$1":*) ;; *) PATH="$1:$PATH" ;; esac; }

So verwenden Sie diese Pfadaktualisierungsfunktion, um ein Verzeichnis zum aktuellen PATH hinzuzufügen:

pupdate /new/path

Linux
  1. So fügen Sie ein Verzeichnis zu PATH in Linux hinzu [mit Beispielen]

  2. So fügen Sie mehrere Hosts in phpMyAdmin hinzu

  3. Wie kann man `sudo` dazu bringen, $path beizubehalten?

  4. Wie kann ich den $PATH unter Linux bearbeiten?

  5. Wie füge ich bestimmte Verzeichnisse zum Suchpfad updatedb (locate) hinzu?

So fügen Sie einen Benutzer zu einer Gruppe in Linux hinzu

So fügen Sie ein Verzeichnis zu PATH in Linux hinzu

So fügen Sie ownCloud 9 externen Speicher hinzu

So fügen Sie ein Verzeichnis zu PATH in Linux hinzu [Kurztipp]

So fügen Sie eine Route unter Linux hinzu

Linux:Fügen Sie PATH ein Verzeichnis hinzu