Shebang

Shebang zorgt voor verwarring

In scripts wordt vaak gebruikgemaakt van een zogenaamde Shebang (Wikepedia: a shebang (also called a sha-bang,[1][2][3] hashbang,[4][5] pound-bang,[2][6] hash-exclam,[2] or hash-pling[2][7]), is the character sequence consisting of the characters number sign and exclamation mark (that is, “#!“) at the beginning of a script.)

Dit is dan bijvoorbeeld: #!/bin/sh

Dit kan soms voor verrassingen zorgen bij het uitvoeren van scripts. De shebang zorgt er namelijk voor dat scripts worden uitgevoerd door een bepaalde shell of omgeving (environment).

In Capistrano scripts kom je soms het volgende tegen: #!/usr/bin/env php
Dit betekent het volgende: zoek je omgevingsvariabelen naar de eerste verwijzing naar php en gebruik deze voor het script. Dat kan soms verwarring opleveren op een server waar meerdere php versies staan.
Het commando echo $PATH levert als uitput het volgende op: /bin:/sbin:/bin:/usr/sbin:/usr/bin

Dat betekent dus dat php uit een van deze directories wordt gehaald. Maar stel dat we een andere versie willen gebruiken. Dan is het nodig om voor deze gebruiker de PATH variabele aan te passen. Dat doen we als volgt:

su <gebruikersnaam> (switch user)
vi .bash_profile (dit is het globale profiel)
voer hier het volgende in:

php() {
/usr/local/php55/bin/php “$@”
}
export -f php

PATH=/usr/local/php55/bin:$PATH
export PATH

Eerste commando is om de standaard php variabele aan te passen. Het pad aanpassen is voor de env variable  in de shebang.
Het aanpassen van het pad kan op 2 manieren:
PATH=$PATH:/TOEVOEGING
Hierbij wordt de nieuwe padverwijzing achteraan gezet.
Of andersom:
PATH=/TOEVOEGING:$PATH

export PATH zorgt ervoor dat de gegevens worden doorgevoerd naar de env(ironment).