Marc_BlackJack_Rintsch schrieb:
@user_unknown: Der selbsdokumentierende Beweis funktioniert so nicht:
bj@s8n:~$ echo -e '#!/bin/bash\nhistory | tail -3' > histail.sh
bj@s8n:~$ chmod +x histail.sh
bj@s8n:~$ ./histail.sh
Da habe ich jetzt nix vergessen, sondern da wird tatsächlich nix ausgegeben. Der Unterschied ist, das bei mir durch den She-Bang tatsächlich eine neue Shell mit leerer History gestartet wird.
Oha!
Diesen Seiteneffekt eines Shebangs kannte ich bislang nicht.
Nun - daraus folgt schlicht, dass wir den Shebang dann einfach weglassen, oder?
Ich bin ja kein Experte für POSIX und andere Shells als Bash, aber wer an der laufenden History interessiert ist, der bewegt sich wohl in einer interaktiven Shell, die per Default bei ubuntuartigen Systemen die Bash ist.
Der impliziten Dokumentation nennen wir das Ding dann nicht xy.sh, sondern xy.bash, was eine seltene, aber keine nie gesehene Dateiendung ist. Der Befehl history
ist ohnehin ein Bashism, ist er nicht?
Der Unterschied ist, das bei mir durch den She-Bang tatsächlich eine neue Shell mit leerer History gestartet wird.
Ich glaube da muss ich Deine Korrektur korrigieren. Es wird nicht mit leerer, sondern ohne History gestartet, wenn Du einen Shebang nutzt:
Hier 2 neue Bausteine eines Beweises:
| echo -e 'echo $SHELL \necho zeile 2\necho zeile 3\nhistory' > histroy.bash ; chmod +x histroy.bash; ./histroy.bash | tail -5
echo -e '#!/bin/bash\necho $SHELL\necho zeile 2\necho zeile 3\nhistory' > histroy.bash ; chmod +x histroy.bash; ./histroy.bash | tail -5
|
Nr. 1 erbt die History und zeigt sie auch an, Nr. 2 übergeht derlei Versuche stillschweigend und gibt nichts aus.
Muss jetzt aber kurz fort und kann nicht weiter meinem Forschergeist frönen, der mich drängt, in der Manpage mehr Infos zur History zu schürfen.