(Unix / Linux) Wie führt man verschiedene Befehle mit gleichem Namen aus?

3561

Ich habe zwei separate Dateien auf meinem Computer.

which execfile /usr/local/bin/ /usr/bin/ 

Ich habe also zwei Dateien mit demselben Namen in zwei verschiedenen Verzeichnissen. Wie kann ich genau angeben, welcher Befehl ausgeführt werden soll?

Vielen Dank.

2

6 Antworten auf die Frage

8

Sie können den vollständigen Pfad zum Befehl angeben, wenn Sie ihn ausführen:

/usr/bin/execfile 

oder

/usr/local/bin/execfile 

um die genaue Datei an diesem Pfad auszuführen

Gibt es eine Möglichkeit, einen dieser Befehle als Standardbefehl zu wählen? vor 13 Jahren 0
Ja, wenn / usr / bin / execfile die Standardeinstellung sein soll, stellen Sie sicher, dass / usr / bin / vor / usr / local / bin / in Ihrer Shell-Umgebungsvariablen `PATH` steht. Bertrand Marron vor 13 Jahren 6
@tusbar +1 für richtige Antwort;) vor 13 Jahren 0
1
Bertrand Marron
/usr/local/bin/execfile 

oder

/usr/bin/execfile 
1
shahjapan

Prüfen Sie auch, ob beide zu derselben Datei gehören - wie es ein Link sein könnte

ls -al /usr/bin ls -al /usr/local/bin 

und prüfen, ob sie miteinander verbunden sind

Wenn sie verknüpft sind, können Sie keine Differenz ausführen, andernfalls müssen Sie den vollständigen Pfad angeben

Das wird angezeigt, wenn sie mit einem Link verknüpft sind (Sie sehen etwas wie "/ usr / bin / execfile -> / usr / local / bin / execfile"). Um zu sehen, ob sie fest verlinkt sind, verwenden Sie ls -li / usr / bin / execfile / usr / local / bin / execfile und vergleichen Sie ihre Inode-Nummern. Dennis Williamson vor 13 Jahren 1
1
Dom De Felice

Beim Versuch, einen Befehl foo auszuführen, wird foo in den durch die Umgebungsvariable PATH angegebenen Verzeichnissen in der gleichen Reihenfolge gesucht, in der sie angegeben sind. Wenn Sie dies vermeiden möchten, geben Sie den vollständigen Pfad zur ausführbaren Datei ein.

Geben Sie dies in ein Terminal ein:

echo $PATH 

um den aktuellen Inhalt der PATH-Umgebungsvariablen anzuzeigen.

Wenn Sie beispielsweise immer die ersten ausführbaren Dateien in / bin ausführen möchten, stellen Sie sicher, dass / bin in $ PATH an erster Stelle steht. Sie können PATH in der .profile-Datei in Ihrem Home-Verzeichnis angeben. Für das Beispiel oben bearbeiten Sie die Datei und setzen diese Zeile am Ende:

export PATH = / bin: $ PATH

Dies funktioniert nur für Ihren Benutzer. Wenn Sie $ PATH systemweit angeben möchten (es funktioniert für alle Benutzer mit Ausnahme der Benutzer, die es in ihrem .profile ändern), fügen Sie dieselbe Zeile oben in der Datei / etc / profile hinzu (Sie benötigen Root-Rechte.) .)

Denken Sie auch daran, dass Profildateien nur anfangs analysiert werden. Das heißt, wenn Sie Ihre persönliche .profile-Datei bearbeiten, müssen Sie Ihre Shell dazu veranlassen, sie erneut zu analysieren. Sie können dies ausloggen und erneut anmelden oder auf andere Weise eingeben:

quelle ~ / .profile

Geben Sie für die systemweite Änderung ein

source / etc / profile

Dadurch wird Ihre aktuelle Shell-Sitzung die Profildatei erneut parsen. Wenn Sie möchten, dass Ihr komplettes Bootstrapped-System es erneut analysiert, sollten Sie Ihre Sitzung besser neu starten.

Denken Sie auch daran, dass sich dies ändern kann, wenn Sie eine andere Shell als bash verwenden.

In der bash-Manpage finden Sie einige interessante Informationen: http://linux.die.net/man/1/bash

Siehe Abschnitt "Befehlsausführung".

BTW frage das auf http://superuser.com/ vor 13 Jahren 0
1
fgm

Schreiben Sie einen Alias ​​in ~ / .profile:

alias execfile='/usr/local/bin/execfile' 

Nach dem nächsten Login wird automatisch die richtige Version ausgewählt. Starten Sie die anderen mit dem vollständigen Pfad.

0
Matthew Flaschen
/usr/local/bin/execfile  /usr/bin/execfile