2010-12-07 11 views
0

Je veux exécuter les commandes suivantes à partir d'un script bash:Exécuter des commandes à l'intérieur d'un script bash

sudo cat << EOF>> /etc/profile 

export LD_LIBRARY_PATH=/lib:/lib64:/usr/lib:/usr/lib64:/usr/local/lib:/usr/local/lib64 
export JAVA_HOME=/opt/jdk1.6.0_22/ 
export PATH=${JAVA_HOME}/bin:/opt/tomcat/bin:${PATH} 

EOF 

sudo source /etc/profile 

Mais obtenir une erreur suivantes:

/home/ak/init-script.sh: line 40: /etc/profile: Permission denied 
sudo: source: command not found 

Toute aide sur la façon d'atteindre ce je veux?

Antonis

Répondre

2

Vous obtenez l'erreur "Autorisation refusée" lorsque vous essayez d'écrire dans/etc/profile. C'est parce que sudo est appliqué seulement à la première commande - cat, mais l'écriture de processus dans/etc/profile a les privilèges de votre utilisateur normal.

C'est pourquoi ce fichier n'est pas créé. Il y a un workaround, mais je ne pense pas que vous en avez besoin, car si vous avez juste besoin d'exporter certaines variables, vous pouvez le faire directement à partir de votre shell:

export LD_LIBRARY_PATH=/lib:/lib64:/usr/lib:/usr/lib64:/usr/local/lib:/usr/local/lib64 
export JAVA_HOME=/opt/jdk1.6.0_22/ 
export PATH=${JAVA_HOME}/bin:/opt/tomcat/bin:${PATH} 

Si vous devez charger les paramètres de/etc/profil à votre shell, vous pouvez simplement exécuter source /etc/profile sans sudo, il n'est pas nécessaire là-bas.

+0

C'est génial! Je vous remercie! – Antonis

3

source est une commande bash builtin, pas un programme que vous pouvez exécuter avec sudo. Vous devez utiliser sudo sur l'ensemble du script