Alias akzeptiert keine Argumente. Es ersetzt einfach eine Zeichenfolge durch die andere in Ihrer Befehlszeile. $@
Für einen Alias gibt es kein separates Zeichen. Er wird also "$@"
nicht wie erwartet erweitert. Es wird erweitert, als ob Sie direkt in Ihre Befehlszeile (von Hand) eingegeben hätten:
echo "$@"
(Dies zeigt nicht das genaue Wort, aber es ist nicht der Punkt).
Eine Funktion nimmt jedoch Argumente und hat ihre eigenen $@
. Es ist mir nicht klar, ob Sie echo
Ihre Alias "Argumente" drucken möchten. Wenn ja, würde ich dies anstelle eines Alias tun:
cde() { cd "$@" ; echo "$@" ; }
Oder eher:
cde() { cd "$@" ; pwd ; }
Der Unterschied besteht in der Handhabung (Echo) mehrerer Argumente, dem Erweitern von Pfaden ..
usw. Auch Optionen -L
und -P
Optionen pwd
können nützlich sein.
Wenn Sie überschreiben möchten, cd
müssen Sie command
eine Endlosschleife vermeiden (die Funktion würde sich ansonsten aufrufen):
cd() { command cd "$@" ; pwd ; }