Verhindern bash-alias aus der Bewertung der Aussage bei der shell starten
Sagen, ich habe das folgende alias.
alias pwd_alias='echo `pwd`'
Dieser alias ist nicht "dynamisch". Es wertet pwd
sobald die shell gestartet wird. Gibt es trotzdem zu Verzögerung der Auswertung des Ausdrucks in der Zecken, bis Sie den alias der Laufzeit?
- Die einfachen Anführungszeichen sollten das tun (und das tun Sie auf meinem system).
alias pwd_alias='echo $PWD'
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was Sie wirklich wollen, ist eine Funktion, anstelle eines alias.
Aliase nichts mehr tun, als text zu ersetzen. Nichts mit Komplexität fordert für eine Funktion.
function pwd_alias { echo "$PWD" }
;
zBpwd_alias() { echo "$PWD"; }
.function
- Schlüsselwort in der definition. Ich habe ein syntax-error in der ersten Klammer als ich versuchte, die syntax in der Antwort meiner .bashrc-Datei.Als jordanm sagte, Aliase nichts mehr tun, als text zu ersetzen.
Wenn Sie möchten, dass das argument von echo auf die Ausgabe von pwd erweitert durch bash, dann verstehe ich nicht deine Frage.
Wenn Sie möchten, dass das argument von echo zu `pwd` mit den backquotes gehalten, es ist tatsächlich möglich, zum Beispiel:
Also, wenn anstelle von echo Sie haben etwas, was nicht backquote-Erweiterung in seiner eigenen Laufzeit, ist vielleicht das, was Sie wollen.
alias a="echo \`pwd\`"
pwd
mit den backquotes gehalten.Ich glaube nicht, dass Sie können ändern Sie die Bewertung aus, die bei der shell starten. Da die Prozesse bei der Erstellung der alias ausgeführt wird, bei der shell starten
pwd
wird dann ausgewertet. Sie konnte einfach den alias ändern, führen Sie einfachpwd
ohne Zecken alspwd
Ausgänge ohne die Notwendigkeit echo. Eine einfache Möglichkeit, diese zu lösen, ist zu ändern, die Verwendung eines alias, ein shell-Skript in deinem Pfad, wenn Sie nicht möchten, dass zu ändern, das unter Verwendung eines Pseudonyms gestattet.