[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