Ich habe ein Problem in Bezug auf eine Alias-Datei in /etc/profile.d/
. Das ist nichts Wichtiges. Ich bin nur daran interessiert, warum es nicht wie erwartet funktioniert.Befehl funktioniert im Terminal aber nicht als Alias in Profil.d
Also im Grunde habe ich die Datei 00-alias.sh
bei dem oben genannten Pfad und ich wollte eine Verknüpfung, die eine bestimmte Zeile einer Datei liest. Also das ist mein Code:
alias lnn='sed -n "${1}p" < "${2}"'
Mit diesem Code sollte ich in der Lage sein, einen Befehl wie
$ lnn 4 test.txt
jedoch auszuführen, funktioniert das nicht. Ich bekomme einfach den Fehler
-bash: : No such file or directory
Nun dachte ich, ok, vielleicht relative Pfade funktionieren nicht, weil die Datei auf dem Pfad befindet /etc/profile.d/00-alias.sh
ich voraus Also ging und machte ein neuen Alias wie
alias pwd2='echo $(pwd)'
dann die profile.d mit
aktualisiertsource /etc/profile.d/00-alias.sh
Und gerade versuchen pwd2
aber die wiederholte den Weg, den ich zur Zeit in war. Also in der Theorie kann die Datei mit dem Befehl gefunden wird ich geschrieben habe. Ich habe immer noch versucht, die Datei an meinen Alias mit absoluten Pfad wie
$ lnn 4 /var/test.txt
weiterzugeben, die gleichen Fehler wie oben.
Aber, wenn ich den Befehl des Alias im Terminal wie
sed -n "4p" < test.txt
Es funktioniert völlig in Ordnung ein. Egal, ob ich in Anführungszeichen test.txt
setzen Und hier ist eine andere seltsame Sache: Wenn ich
alias lnn='sed -n "${1}p" < ${2}'
ohne Anführungszeichen schreiben um ${2}
ich den Fehler
-bash: ${2}: ambiguous redirect
In der Terminal es funktioniert einfach gut ...
Also, was mache ich falsch? Hat jemand eine Idee dazu? Ich würde gerne meinen Fehler wissen. Aber wie gesagt, das ist kein echtes Problem, da ich nur neugierig bin, warum Bash sich so verhält.
Wenn Sie Variablen übergeben möchten, erstellen Sie ein Skript mit dem darin enthaltenen Befehl und richten Sie dann einen Alias für dieses Skript ein. Sie können die Variablen dann an den Alias übergeben. –