
Ich führe ein ziemlich kompliziertes Skript aus, das Verzeichnisse ändert und viele andere Befehle ausführt. Alle diese Befehle werden mit „Skriptname“ ausgeführt, was gut funktioniert, wenn ich das Hauptskript von meinem Terminal aus ausführe. Manchmal muss ich mich jedoch per SSH mit einem Server verbinden und das Hauptskript von dort aus ausführen. Dies schlägt fehl, da vor jedem Befehl kein ./ steht.
Ich möchte lieber nicht alle Skripte und ausführbaren Dateien durchgehen und den Befehlen ein ./ hinzufügen. Gibt es also eine andere Möglichkeit, dieses Problem zu lösen?
Antwort1
Es gibt Möglichkeiten, dieses Verhalten zu ändern, einschließlich der Erweiterung ./
Ihrer Umgebungsvariable PATH, aber dies stellt ein ernstes Sicherheitsrisiko für Ihre Umgebung dar. Die Art und Weise, wie Ihre Skripte geschrieben sind, ist wirklich falsch und die richtige Lösung besteht darin, sie alle durchzugehen und die Art und Weise zu korrigieren, wie lokale Skripte aufgerufen werden. Dies ist die einzige richtige Lösung, die keine zusätzlichen Probleme auf lange Sicht verursacht und Sicherheitsprobleme für Sie schafft. Ich weiß, dass es nicht das ist, was Siegesuchtzu hören, aber beißen Sie die Zähne zusammen und machen Sie es richtig.
Antwort2
Wenn Ihre Skripte unter /opt/housekeeping/bin liegen, schlage ich vor, dass Sie hinzufügen
export PATH=$PATH:/opt/housekeeping/bin
zu Ihrem .bash_profile oder .profile oder welchem Anmeldeskript Sie auch immer verwenden und stellen Sie sicher, dass für diese Skripte ebenfalls die Berechtigung 755 festgelegt ist.
Antwort3
Sie können einen Alias für Ihr Skript erstellen:
alias scriptfile="./scriptfile"