Ich verwende Ubuntu 10.04 und verwende upstart
für die Daemon-Verwaltung. Meine Unternehmensanwendung wird als Daemon ausgeführt und muss aufgrund verschiedener Berechtigungen als Root ausgeführt werden. Beispiel:
sudo start my-application-long-ID
sudo stop my-application-long-ID
etc
Ich möchte einen alias
einführen um diese Befehle wie folgt abzukürzen:
alias startapp='sudo start my-application-long-ID'
und führen Sie es als startapp
aus und das funktioniert, aber ich würde es vorziehen, kein sudo im Alias zu haben.
alias startapp='start my-application-long-ID'
nicht, wenn es mit sudo startapp
ausgeführt wird , wobei sudo: startapp: command not found
zurückgegeben wird .
Als ich jedoch den Alias hinzufügte:
alias sudo='sudo '
sudo startapp
funktioniert jetzt, aber ich bin immer noch neugierig, warum sudo Aliase ignoriert.
Akzeptierte Antwort:
Ich sehe die folgenden Informationen von hier aus.
Verwenden Sie bei Verwendung von sudo die Aliaserweiterung (ansonsten ignoriert sudo Ihre Aliase)
alias sudo='sudo '
Der Grund, warum es nicht funktioniert, wird hier erklärt.
Bash überprüft nur das erste Wort eines Befehls auf einen Alias, alle Wörter
danach werden nicht überprüft. Das bedeutet, dass bei einem Befehl wie sudo ll nur
das erste Wort (sudo) von bash auf einen Alias geprüft wird, ll wird ignoriert.
Wir können bash anweisen, das nächste Wort nach dem Alias zu prüfen (d. h sudo) durch
Hinzufügen eines Leerzeichens am Ende des Alias-Werts.