J'ai un script simple qui met en place un référentiel CVS (et d'autres choses) pour le travail. Le script a une fonction qui devrait configurer le référentiel, mais il ne recharge pas correctement .bashrc. Le code est comme suit:
#!/bin/sh
setupCVS()
{
echo '#Environment variables' >> ~/.bashrc
echo 'export CVSROOT=:<server path>' >> ~/.bashrc
source ~/.bashrc
cvs login
cvs co <directories>
}
<other code>
setupCVS
Cela permettra à l'utilisateur d'exécuter le script et de pouvoir immédiatement se connecter au cvs et télécharger le code. Le problème est que le script ne ressource pas .bashrc. J'ai essayé d'utiliser
exec bash
et
. ~/.bashrc
mais je reçois toujours un message du terminal disant que CVSRoot n'est pas défini lorsqu'il atteint
cvs login
Des idées? J'utilise Ubuntu 14.04 si cela est nécessaire.
Un certain nombre de choses:
Le défaut .bashrc
ne fait rien si le shell n'est pas interactif:
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
Votre script utilise /bin/sh
. Ne source pas .bashrc
. Tout élément spécifique à bash pourrait provoquer des problèmes. Et comme le note le conducteur d'acier, /bin/sh
n'a pas source
:
$ sh -c 'source ~/.bashrc'
sh: 1: source: not found
Pourquoi ne pas simplement export
la variable en plus d'ajouter à .bashrc
?