ich habe ein Script, das hat folgende Zeilen:
Code: Alles auswählen
#!/bin/bash
cores=2;
alias ll='ls -lh'
[…]
Code: Alles auswählen
#!/bin/bash
cores=2;
alias ll='ls -lh'
[…]
Also im Script: shopt -s expand_aliasesAliases are not expanded when the shell is not interactive, unless the expand_aliases shell option is set using shopt (see the description of shopt under SHELL BUILTIN COMMANDS below).
Das hilft leider nichts.goeb hat geschrieben:Also im Script: shopt -s expand_aliases
ja, aber das ist nicht schön.goeb hat geschrieben:Aber ein einfaches ll() { ls -lh ; } würde es auch tun.
Meinst du in der Shell aus der heraus du das Skript aufgerufen hast? Aus dem selben Grund weshalb du in der Aufrufenden Shell keine Variablen abfragen kannst du im Skript gesetzt werden. Weil das Skript in einer subshell läuft und sich diese beendet sobald das Skript fertig ist. Also musst du das Skript mit source aufrufen (kurz: . script.shwanne hat geschrieben:Leider funktioniert ll danach nicht. Gebe ich die Zeilen von Hand ein funktioniert's. Warum?
Was ist an Funktionen unschön?wanne hat geschrieben: ja, aber das ist nicht schön.
Dafür gibt's export. Was ist das equivalent für Aliase? Allerdings weiß ich jetzt wenigstens wie es Funktioniert.r900 hat geschrieben:Aus dem selben Grund weshalb du in der Aufrufenden Shell keine Variablen abfragen kannst du im Skript gesetzt werden. Weil das Skript in einer subshell läuft und sich diese beendet sobald das Skript fertig ist. Also musst du das Skript mit source aufrufen (kurz: . script.sh
Funktionen sind nicht an sich unschön. Ich nutze sie gerne aber ein Script lässt sich eben besser lesen, wenn man zwichen dem Zusammenfassen und dem Umbenennen von Befehlen unterscheidet.r900 hat geschrieben:Was ist an Funktionen unschön?
Nee nee, export stellt nur sicher dass die Variablen den Kindprozessen zur Verfügung stehen. Eine Variable im Elternprozess kann durch keines der Kinder geändert werden. Beispiel:wanne hat geschrieben:Dafür gibt's export. Was ist das equivalent für Aliase? Allerdings weiß ich jetzt wenigstens wie es Funktioniert.
Code: Alles auswählen
$ export i=5
$ (while [ $i -lt 8 ]; do ((i++)); echo ">$i<"; done)
>6<
>7<
>8<
$ echo ">$i<"
>5<
Code: Alles auswählen
$ ll() { ls -lh ; }
$ export -f ll
Ne, du hast natürlich recht. Die Variable von außen gilt im Script aber nicht umgekehrt. Ist irgendwie alles hässlich. serde es wohl doch mit sorce machen. Und gleich nen neuen Thread zur neuen Frage aufmachen...r900 hat geschrieben:Vielleicht reden wir aber auch aneinander vorbei und du meinst etwas ganz anderes.