web-dev-qa-db-fra.com

Remplacement de la source en sh

Je dois définir les variables d'environnement, généralement nous le faisons en

source script.sh

Mais maintenant, je l'automatise pendant le processus de démarrage et il ressemble à la racine par défaut avec sh Shell. Comment puis-je trouver ce script dans sh?

56
vkris

La commande dot '. 'est l'équivalent de la commande C Shell (et Bash) source. Il est spécifié par POSIX (voir dot ), et supporté par les shells Bourne et Korn (et zsh, je crois).

. somefile

Notez que le Shell recherche le fichier à l'aide de $PATH, mais le fichier doit seulement être lisible, pas exécutable.

Comme indiqué dans les commentaires ci-dessous, vous pouvez bien sûr spécifier un chemin d'accès relatif ou absolu pour le fichier - tout nom contenant une barre oblique ne sera pas recherché à l'aide de $PATH. Donc:

. /some/where/somefile
. some/where/somefile
. ./somefile

pourrait tous être utilisés pour trouver somefile s'il existait dans les trois emplacements spécifiés différents (si vous pouviez remplacer . avec ls -l et voir un fichier répertorié).

Les pédants du monde s'unissent! Oui, si le répertoire courant est le répertoire racine, alors /some/where/somefile et ./some/where/somefile ferait référence au même fichier - avec le même chemin réel - même sans liens, symboliques ou physiques, jouant un rôle (tout comme ../../some/where/somefile).

80
Jonathan Leffler