Befehlszeilenalias versus .bash_profile-Alias

Befehlszeilenalias versus .bash_profile-Alias

wenn ich diesen Alias ​​von der Kommandozeile aus erstelle, funktioniert alles einwandfrei alias ejecta='for I in 1 2 3; do /usr/sbin/diskutil unmountDisk disk$I;done'

Wenn der gleiche Alias ​​in .bash_profile erstellt wird, löscht das Betriebssystem „$I“

Das ist eine Anfängerfrage, aber es ist mir peinlich, zu sagen, dass ich die Lösung nicht finden kann. Muss ich ein Skript erstellen und den Alias ​​darauf verweisen lassen?

Antwort1

Was Sie versuchen, sollte funktionieren. Das $Iwird wahrscheinlich ausgewertet, wenn Ihr Alias ​​definiert wird. Das bedeutet wahrscheinlich, dass Ihnen irgendwo ein paar Anführungszeichen fehlen.

Ohne den relevanten Teil Ihres .bash_profiles einzuschließen, ist es jedoch schwer zu sagen.

Antwort2

In Ihrer Frage umgeben Sie den Alias ​​mit einfachen Anführungszeichen, was die richtige Vorgehensweise ist, um die Auswertung der Variable zu verzögern. Ich vermute, dass Sie in Ihrer Frage doppelte Anführungszeichen verwenden, .bash_profiledie eine sofortige Auswertung der Variable ermöglichen. Da die Variable zu diesem Zeitpunkt wahrscheinlich nicht gesetzt ist, wird sie als Nullzeichenfolge ausgewertet.

verwandte Informationen