Quelqu'un peut-il m'expliquer ce que fait le shell dans les deux exemples A) et B) ci-dessous? Il se comporte évidemment différemment, mais je ne peux pas comprendre pourquoi la sortie est différente.
Exemple:
Ayons un script dans notre répertoire actuel nommé bla.sh
avec une seule commande:
echo ${0##/*} hello
A)
Commencé comme: ./bla.sh
donne:./bla.sh hello
B)
Commencé comme: . bla.sh
donne:-bash hello
Puisque j'utilise ceci dans un script, la deuxième sortie (à cause du "-" devant le -bash) tue la commande. Bien sûr, un simple --
avant l' ${...}
aide, mais j'aimerais comprendre ce qui cause la sortie en premier lieu.
J'adore bash. Et vi [m]. Mais je m'égare…
source
c'est un alias bash pour.
, pas le contraire etsource
ne fonctionnera pas dans d'autres shells../<cmd>
exécutera le<cmd>
programme qui réside dans le répertoire courant dans un nouveau processus (fourchu). Il doit être exécutable. Et aussi lisible, il commence par#!
.. <cmd>
fera exécuter à votre shell actuel le script shell<cmd>
qui réside dans votre$PATH
répertoire ou dans le répertoire courant du processus shell actuel . Il doit être lisible. Il s'agit d'un alias pour la commande shellsource
.la source
. <cmd>
recherchera le programme dans$PATH
et s'il n'est pas trouvé ALORS il cherchera dans le répertoire courant.. ./cmd
./cmd
utilise un chemin explicite (./
- dir actuel) vers l'exécutable. Et il n'est pas nécessaire que cela commence par#!
.. cmd
- (akasource
) - commande bash intégrée. Une différence visible de l'exécution à traverssource
est qu'il peut définir / modifier la variable d'environnement du shell actuel.la source
source
est un alias bash uniquement.
(qui est standard)