Ich habe viele Befehlszeilentools, die ich häufig verwende. Ich habe die normale Methode verwendet, um den vollständigen Pfad dieses Befehls durch das Terminal zu durchlaufen, und dann ./command-name ABER dies ist eine umständliche und zeitaufwändige Aufgabe.
Als ich mich mit dem Thema "Ausführen eines Befehls von überall über das Terminal" befasste, fand ich eine Lösung, um den Pfad in die Umgebungsvariable aufzunehmen (durch Bearbeiten von ./bashrc).
Das funktioniert gut.
Ich habe sogar herausgefunden, dass alle global funktionierenden Befehle (wie mkdir, ifconfig, cp usw.) im Verzeichnis "/ bin" abgelegt sind.
Wenn ich die "Symlinks" meiner Befehle in das Verzeichnis "/ bin" einbinde, funktioniert alles einwandfrei und ich kann die Befehle von überall im Terminal ausführen.
Meine Frage
Ist es sicher, Symlinks direkt im Verzeichnis / bin abzulegen? Ich frage dies, weil ich beim Platzieren der Symlinks nach dem Administratorkennwort gefragt wurde.
Wird es einen Unterschied machen, wenn ich die Symlinks der Befehle in / bin im Vergleich zum Verzeichnis / usr / bin platziere?
Umwelt (wenn es darauf ankommt):
Ubuntu 13.10, 32-Bit.
Antworten:
Es ist nicht mit zu verwirren empfohlen
/bin
und mit/usr/bin
obwohl dies funktionieren wird es etwas unsicher ist. Auch Sie nicht brauchen , um Ihre Symlinks dort zu platzieren.Ich hatte das gleiche Problem wie Sie erwähnt. Es ist umständlich, zu Ihren Skripten zu navigieren und sie wie
./myscript
jedes Mal aufzurufen . Hier ist was ich getan habe.Definieren Sie Ihr eigenes Bin-Verzeichnis
Sie können Ihr eigenes bin-Verzeichnis erstellen und Ihre Skripte dort ablegen. Erstellen Sie es mit
Jetzt müssen Sie die Umgebungsvariable PATH manipulieren. Dies ist ein sensibler Bereich. Wenn Sie die Variable PATH durcheinander bringen, können Sie keine Befehle mit relativen Pfaden mehr ausführen. Wenn das passiert,
ls
funktioniert es möglicherweise nicht mehr/bin/ls
.Was ich jetzt zeigen werde, wirkt sich nur auf die aktuell laufende Terminalsitzung aus. Wenn also etwas schief geht, melden Sie sich einfach mit Ctrl+ ab Dund alles ist wie vorher.
Der
echo
Befehl-zeigt, was vorher und nachher in $ PATH steht.export
Mit dieser Option können Sie die Umgebungsvariable ändern. Ihr zusätzliches bin-Verzeichnis wird an das Ende der Variablen angehängt. Dies bedeutet, dass Ihre Befehle die niedrigste Priorität haben, wenn mehr als ein Befehl mit demselben Namen vorhanden ist. Dies ist gut, da Sie wichtige Systembefehle nicht überschreiben möchten.Bearbeiten Sie Ihre ~ / .bashrc-Datei, um die Änderungen dauerhaft zu machen.
export PATH=$PATH:~/bin
am Ende dieser Datei hinzufügen .Jetzt wird bei jeder neuen Terminalsitzung die Variable $ PATH um Ihr Verzeichnis erweitert.
quelle
~/bin
bereits $ PATH hinzugefügt, auch wenn~/bin
es noch nicht erstellt wurde. Sie können die~/.profile
Datei überprüfen , um dies zu sehen.Bevor ich Ihre Frage beantworte, möchte ich kurz erläutern, wie es funktioniert.
In Ihrem System haben Sie
Environment Variables
. Eine davon ist einePATH
Variable, die eine Reihe von Verzeichnissen speichert, in denen sich ausführbare Programme und Skripte befinden.PATH
Speichern Sie unter Linux standardmäßig einige Verzeichnisse. Einer von ihnen/bin
. Deshalb können Sie jedes Programm ausführen, das sich in befindet/bin
. Sie können IhrePATH
Variable überprüfen , indem Sie Folgendes ausführen:In
PATH
variabler Reihenfolge der Verzeichnisse ist wichtig . Die Pfadnamen mit der höchsten Priorität werden zuerst angegeben.Beantworten Sie nun Ihre Fragen:
Ja, es ist sicher, Symlink in zu erstellen
/bin
. Natürlich, wenn Sie andere ausführbare Dateien nicht neu schreiben . Aber Sie sollten es vorziehen, zu verwenden/usr/local/bin
. Es muss auch in deinem seinPATH
.Ja, so ist es. Je nach Bestellung in
PATH
. Wenn Sie zum Beispiel setzen Symlinks von verschiedenen Dateien , aber mit dem gleichen Namen sowohl auf/bin
und/usr/bin
, und/usr/bin
in enthieltenPATH
früher als/bin
, dann wird es Symlink von verwenden/usr/bin
.Informationen zur Dateisystemhierarchie finden Sie hier
Informationen zu Ubuntu-Umgebungsvariablen finden Sie hier
quelle
Es besteht ein Sicherheitsrisiko. Ich halte es wirklich nicht für sinnvoll, eigene Symlinks in das Verzeichnis / bin zu stellen, da nicht nur Ihre Befehle global werden, sondern auch symbolische Links leicht unterbrochen werden können. Die Umgebungsvariable bash PATH ist eine robustere Lösung.
Nein. Obwohl gemäß dem Filesystem Hierarchy Standard (FHS) ein Unterschied zwischen / bin und / usr / bin besteht.
Aber der Unterschied ist heute nicht so wichtig. Tatsächlich besteht bei einigen Distributionen (insbesondere Fedora) die Tendenz, das Verzeichnis / bin auszublenden.
quelle
NEIN!!! Berühren Sie keine Systemverzeichnisse. Jedes Skript oder Programm, das Sie geschrieben haben, sollte normalerweise in
/usr/local/bin
und/usr/local/sbin
Verzeichnissen abgelegt werden. Das Hinzufügen von Verzeichnissen zu PATH ist keine gute Idee, da es Sicherheitsrisiken birgt.Auch der Unterschied zwischen den Verzeichnissen, die für Superuser- Programme gelten.
quelle