Ich frage mich, ob es ein Unix-Äquivalent für die Windows-Umgebungsvariable gibt PATHEXT
.
Für Benutzer ohne Windows-Hintergrund: Durch Hinzufügen eines Dateisuffixes PATHEXT
kann ich ein Skript ausführen, ohne dieses Suffix in cmd.exe einzugeben. Auf meinem Windows-Computer enthält PATHEXT beispielsweise das Suffix. .pl
Wenn ich ein Perl-Skript in cmd.exe ausführen möchte, kann ich einfach eingeben my-script
und es wird ausgeführt. Um dasselbe Skript in bash auszuführen, muss ich jedoch den vollständigen Namen schreiben : my-script.pl
.
Da ich derzeit sowohl unter Windows als auch unter Unix arbeite, gerate ich fast immer in die Falle, dass ich vergesse, das Suffix einzugeben, wenn ich wieder zu einer Unix-Box gehe.
shell
environment-variables
René Nyffenegger
quelle
quelle
.sh
vorher.pl
,foo.sh
wird ausgeführt. stackoverflow.com/a/7839178/180275Antworten:
kurz: nein
länger: Shell-Skripte erfordern einen vollständigen Dateinamen, aber Sie können Aliase definieren, damit Ihre Befehle mit verschiedenen Namen auf sie verweisen. Beispielsweise
quelle
Die einfachste Lösung besteht darin, keine Erweiterungen für Ihre Skripte zu verwenden. Sie sind nicht erforderlich und dienen nur dazu, den Typ des Skripts für Sie zu identifizieren, nicht jedoch für den Computer. Während Windows Erweiterungen verwendet, um den Dateityp zu identifizieren,
gzip
tun dies * nix-Systeme (mit sehr wenigen Ausnahmen wie ) nicht.Beachten Sie, dass Binärdateien
.exe
in * nix keine Erweiterung haben. Sie werden nur aufgerufenfoo
, nichtfoo.exe
. Wenn Sie alsofoo.pl
als ausführbar sein möchtenfoo
, speichern Sie die Datei einfach alsfoo
erstes.Wenn Sie die Erweiterungen aus irgendeinem Grund wirklich benötigen, wechseln Sie in das Verzeichnis, in dem Sie Ihre Skripte speichern, und führen Sie Folgendes aus:
Dadurch werden alle Dateien mit Erweiterungen durchlaufen und für jede Datei
foo.ext
wird ein Link erstellt,foo
der auf verweistfoo.ext
. Beachten Sie, dass dies fehlschlägt, wenn Sie mehrere Skripte mit demselben Namen, aber unterschiedlichen Erweiterungen haben.quelle
Wenn Sie es wirklich wollen, gibt es einen Weg. Fügen Sie am Ende von
.bashrc
in Ihrem Home-Verzeichnis Folgendes hinzu und setzen SiePATHEXT
auf Erweiterungsnamen mit durch getrennten Punkten:
. (Die Punkte wurden geändert, um sie an das Windows-Verhalten anzupassen.) Die Verwendung erfolgt auf eigenes Risiko.Denken Sie auch daran, dass Sie den Befehlsnamen mithilfe der Registerkarte vervollständigen können, wenn es keinen anderen Befehl gibt, der ebenfalls mit beginnt
my-script
.quelle