Question

Certains question se pose lorsque l'approvisionnement un de votre fichier env (une série d'exportation variable)

par exemple:

...
export MY_ROOT=/Soft/dev/blah/blah
export MY_BIN=${MY_ROOT}/bin
...

résultats dans

$. my_env.sh
$echo $MY_BIN
/bint/dev/blah/blah

=> "/ bin" semble remplacer le début de la variable au lieu de suffixant il ..

Toute idée?

Par ailleurs chaque fois que nous approvisionnons ce fichier, un message d'erreur est signalée:

": Command not found"

Ce qui est bizarre .. Ce message apparaît même si nous commentons tout son contenu.

Le shell invoqué au début semble bon #!/bin/sh ou #!/bin/bash.

Qu'en est-il des caractères de contrôle? Comment les filtrer sur linux?

Était-ce utile?

La solution

Cela corrigera les fins de ligne dans le fichier:

dos2unix my_env.sh

Il n'y a pas besoin d'un tralala dans un fichier qui va seulement être source car il est exécuté dans le shell courant de toute façon. Cependant, comme un commentaire, il pourrait être instructif pour les lecteurs humains.

Autres conseils

": command not found" est l'erreur que je l'ai vu quand un script shell UNIX / Linux a été (mal) traités par un système MS Windows. Par exemple, s'il a été vérifié à l'aide d'un WebCVS, modifié à l'aide Bloc-notes ou WordPad, puis soumis à nouveau.

(Il se plaint qu'il ne peut pas trouver le [Ctrl-M] exécutable --- qui est parfaitement valable, bien que le nom de fichier très pratique et un peu suspect pour UNIX / Linux).

Exécuter le fichier via GNU cat -A ou les commandes od -x ou hexdump voir ces (et vérifier mon diagnostic ... ou l'exécuter par tr -d avec le devis et appropriée shell « mot pour mot » manipulation de votre système. (Par exemple tr -d '[Ctrl-V],[Ctrl-M]' sous bash sur un système Linux typique).

En fonction de votre version de tr vous pourriez être en mesure d'utiliser: tr -d '\r' ou tr -d \015 (015 est le octal pour CR, « retour chariot » ou ^ M --- MS-DOS utilisé pour utiliser des paires CR / LF comme terminaison de ligne , qui est juste une des nombreuses raisons que MS-DOS peut pourrir dans l'abîme Forsaken en matière d'interopérabilité. terminateurs de ligne de caractères uniques ne causent pas de vrais problèmes pour quelqu'un d'autre ... mais PAIRS causer des problèmes réels de conversion quand tout le reste en l'histoire de l'informatique grand public utilisé des caractères individuels pour cela).

Oh, oui, vim a une set ff pratique (option aka set fileformat qui peut gérer UNIX, MacOS, et les conventions de terminaison de ligne MS-DOS de toute copie de vim quel que soit dont la plate-forme que vous êtes. Je crois me rappeler la valeur par défaut de vim est de détecter les types de terminaison de ligne un fichier utilise et laisser inchangé (et par défaut au natif de votre plate-forme pour tous les nouveaux fichiers, bien sûr).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top