envsubst: commande introuvable sur Mac OS X 10.8
Lorsque j'essaie d'exécuter un script qui contient les envsubst commande, je reçois cette erreur. La recherche en ligne, ce qui semble être un standard de commande bash, donc je ne suis pas sûr de ce que pour installer afin de l'obtenir pour fonctionner.
envsubst
est inclus dansgettext
paquet. vous pouvez compiler votre propre. voir stackoverflow.com/questions/14940383/...- Envie d'ajouter que comme une réponse afin que je puisse l'accepter?
- Je l'ai posté en tant que réponse.
Vous devez vous connecter pour publier un commentaire.
Edit: @cobberboy 's réponse est plus correct. upvote lui.
Qui suit est mon ancienne réponse:
envsubst
est inclus dansgettext
paquet.Par conséquent, vous pouvez compiler votre propre, en utilisant des standards de construction des outils tels que
make
ou à l'aide dehomebrew
.Cependant, il semble avoir peu de problème lors de l'installation de
gettext
dans MacOS.Voir l'url suivante pour plus de détails: Comment faire pour installer gettext sur MacOS X
envsubst
fait partie de gettext (installé par homebrew), il n'est pas lié par défaut. Je m'attends c'est parce que gettext est un keg seule formule. Vous pourriez dire homebrew pour lier le baril, mais cela pourrait avoir des effets secondaires indésirables. La moins intrusive approche est l'installation d'un alias par l'ajout dealias envsubst='/usr/local/Cellar/gettext/0.19.6/bin/envsubst'
à votre.profile
(ou l'équivalent). Bien sûr, vous pouvez avoir une autre version de gettext installé. Vous pouvez apprendre à ce sujet par l'exécution debrew info gettext
./usr/local/opt/gettext/bin/envsubst
qui survit à des mises à niveauCela permettra envsubst sur OS X, et la force de lier correctement. Il nécessite homebrew pour être installé.
Linking /usr/local/Cellar/gettext/0.19.8.1... 194 symlinks created
... wtf 194 liens symboliques?gettext
comprend un enfer de beaucoup de choses; il semble exagéré juste pour obtenirenvsubst
installé, mais c'est le moyen le plus rapide et le plus simple.Pour éclaircir les risques de confusion:
envsubst
est un externe exécutable et donc pas partie de Bash externes des exécutables sont dépend de la plateforme, à la fois en termes de ceux qui sont disponibles, ainsi que leurs comportements spécifiques et des options de soutien (même si, heureusement, il y a un sous-ensemble commun basé sur les spécifications POSIX)bash
sont appelés les builtins, et seulement ils peut être invoqué pour être présent sur tous plates-formes.À tester si une commande est un builtin, utilisez
En l'espèce, l'exécution de
type envsubst
sur macOS 10.13 retourne-bash: type: envsubst: not found
, à partir de laquelle vous pouvez déduire:envsubst
n'est PAS un builtinenvsubst
n'est pas dans votre système$PATH
(et donc probablement pas présent sur votre système)(En revanche, l'exécution de la même commande sur, par exemple, une Ubuntu 12.04 système retourne
envsubst is hashed (/usr/bin/envsubst)
, qui vous dit que l'utilitaire est présent et où il est situé.)Une fortune alternative à
envsubst
est d'utilisereval
, bien que l'habituelle mise en garde s'applique: l'utilisationeval
seulement sur les chaînes dont le contenu est le contrôle ou la confiance:Assumer un
sample.txt
fichier contenant le texte non étendues avec les références à des variables; par exemple:L'équivalent de:
est:
Il y a un différence cruciale, cependant:
envsubst
étend seul environnement les références à des variableseval
permettra d'élargir shell les références à des variables trop - ainsi que intégré commande substitutions, qui est ce qui rend l'utilisation deeval
un problème de sécurité.eval echo
parce que j'ai confiance en la source, mais ce n'est pas la même..envsubst < .env.example
ne peut pas simplement êtreeval echo < .env.example
J'utilise maintenant mon script bash qui nécessite envsubst:
vous pouvez l'utiliser comme envsubst de commande bien sûr, ce n'est pas complète ou quelque chose d'autre:
"
autour de la ligne $mais je n'ai pas essayé encore