[linux] Re: de schoonheid van bash...
Eric de Hont
eric op hobiho.nl
Di Dec 16 21:24:40 CET 2014
Op 14-12-14 om 21:59 schreef Hans Paijmans:
> On 14/12/14 21:33, Hans Paijmans wrote:
>> Nog een paar keer geprobeerd, maar string expansion in de shell werkt
>> bij mij alleen vanaf de command line, niet vanuit een script. 'bad
>> substitution'. Zowel voor bash als voor dash.
>>
>>
> en dan blijkt dat "sh scriptname" of "bash scriptname" niet werkt, maar
> "./scriptname" wel. Weet iemand hoe dat komt?
>
>
Dat zijn heel verschillende dingen.
Je hebt een script 'scriptname' dat je de ene keer met sh laat uitvoeren
en de andere keer met bash.
Op mijn Ubuntu-systeem zijn dat aparte dingen:
eric op Perdita-8:~$ ll `which sh`
lrwxrwxrwx 1 root root 4 feb 19 2014 /bin/sh -> dash*
eric op Perdita-8:~$ ll `which bash`
-rwxr-xr-x 1 root root 1029720 okt 7 17:15 /bin/bash*
Om misverstanden te voorkomen moet je er voor zorgen dat de eerste regel
van je script een 'shebang' bevat, bijvoorbeeld:
#!/bin/bash
Dan weet je dat je script altijd door bash wordt uitgevoerd.
(#!/bin/dash mag natuurlijk ook).
Zie: http://en.wikipedia.org/wiki/Shebang_(Unix)
Als je in je script (zonder shebang) het commando 'echo $SHELL' opneemt
kun je zien welke shellvariant jouw script runt.
Dit verklaart nog niet waardoor ./scriptname wel werkt. Dit zou toch
haast ofwel dash dan wel bash moeten zijn. Ik ben benieuwd!
Eric
More information about the Linux
mailing list