script source en tant que command

Pour une raison quelconque (?), Souvent quand j'écris des scripts de nos jours, ils ne fonctionnent pas, ou travaillent seulement en partie, et ensuite j'essaie . ou source et ils fonctionnent parfaitement. Je ne suis pas certain de ce qui est à l'origine de ce problème, car les scripts sont différents, il est difficile d'isoler ce qui doit être généré pour que le script fonctionne. En outre, j'ai remarqué que c'est presque toujours le cas quand je déplace des choses des alias et des fonctions .bashrc dans des scripts.

Mais à ma question, dans la situation ci-dessus, quelle est la façon optimale d'avaler le point source, de sorte que vous pouvez toujours utiliser les scripts comme des commands à un mot, sans avoir à bash à chaque fois?

Si vous voulez une command appelée script qui génère réellement le file de script au lieu de l'exécuter en tant que process distinct, alors faites une fonction:

 script () { . /path/to/script; } 

Pour rendre cette fonction permanente, ajoutez-la au file rc correspondant à votre shell (par exemple ~/.bashrc pour bash ).

Un exemple concret (ou une décomposition de ce qui "ne fonctionne pas" en un exemple) serait le meilleur.

Cela dit, lorsque vous source un file, vous exécutez son contenu dans le même environnement (shell) que celui qui appelle l'opération. source ing est une bonne technique pour pouvoir inclure des variables dans n'importe quel nombre de scripts.

Si le script que vous voulez exécuter n'est pas dans votre PATH , vous faites reference à votre path actuel (pour exécuter le script) en tapant "point", "slash", "filename". Ceci est totalement différent de la source.