it-swarm.com.de

Was sind "$ PATH" und "~ / bin"? Wie kann ich persönliche Skripte haben?

Was ist $PATH?

Wie kann ich Befehle/Programme haben, die nur für mich verfügbar sind?
Ich habe diesen Pfad ~/bin bereits gesehen, aber wofür wird er verwendet und wie verwende ich ihn?

29
Roger Pate

$ PATH ist eine Umgebungsvariable, die zum Nachschlagen von Befehlen verwendet wird. Das ~ ist Ihr Ausgangsverzeichnis, also ist ~/bin/home/user/bin; Es ist ein normales Verzeichnis.

Wenn Sie beispielsweise "ls" in einer Shell ausführen, führen Sie tatsächlich das Programm/bin/ls aus. Der genaue Speicherort kann je nach Systemkonfiguration abweichen. Dies geschieht, weil sich/bin in Ihrem $ PATH befindet.

So können Sie den Pfad anzeigen und feststellen, wo sich ein bestimmter Befehl befindet:

$ echo $PATH
/home/user/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:...
$ which ls     # searches $PATH for an executable named "ls"
/bin/ls
$ ls           # runs /bin/ls
bin  desktop  documents  downloads  examples.desktop  music  pictures  ...
$ /bin/ls      # can also run directly
bin  desktop  documents  downloads  examples.desktop  music  pictures  ...

Um Ihr eigenes privates bin-Verzeichnis zu haben, müssen Sie es nur zum Pfad hinzufügen. Bearbeiten Sie dazu ~/.profile (eine versteckte Datei), um die folgenden Zeilen einzuschließen. Wenn die Zeilen kommentiert sind, müssen Sie sie nur auskommentieren. wenn sie schon da sind, bist du fertig!

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ]; then
  PATH="$HOME/bin:$PATH"
fi

Jetzt müssen Sie Ihr ~/bin-Verzeichnis erstellen. Da .profile bei der Anmeldung ausgeführt wird und nur ~/bin hinzufügt, wenn es zu diesem Zeitpunkt vorhanden ist, müssen Sie sich erneut anmelden, um den aktualisierten PFAD anzuzeigen.

Lass es uns testen:

$ ln -s $(which ls) ~/bin/my-ls   # symlink
$ which my-ls
/home/user/bin/my-ls
$ my-ls -l ~/bin/my-ls
lrwxrwxrwx 1 user user 7 2010-10-27 18:56 my-ls -> /bin/ls
$ my-ls          # lookup through $PATH
bin  desktop  documents  downloads  examples.desktop  music  pictures  ...
$ ~/bin/my-ls    # doesn't use $PATH to lookup
bin  desktop  documents  downloads  examples.desktop  music  pictures  ...
26
Roger Pate

Bezüglich ~/bin und Befehlen/Programmen, die nur Ihrem Benutzer zur Verfügung stehen

Neuere Ubuntu-Versionen enthalten das Verzeichnis ~/bin in Ihrem $PATH, jedoch nur, wenn das Verzeichnis ~/bin vorhanden ist.

Wenn es nicht existiert:

  1. Stellen Sie sicher, dass Ihr ~/.profile die folgende Zeilengruppe enthält (der Standardwert ~/.profile ist bereits vorhanden):

    # set PATH so it includes user's private bin if it exists
    if [ -d "$HOME/bin" ] ; then
        PATH="$HOME/bin:$PATH"
    fi
    
  2. Erstellen Sie das Verzeichnis ~/bin:

    mkdir -p ~/bin
    
  3. Starten Sie Ihren Computer neu oder erzwingen Sie, dass Bash ~/.profile erneut liest:

    exec -l bash
    
19