Probleme de syntraxe
RésoluBonjour,
Je veux exécuter ce script shell en "root"
function connect { su - bea cd /appli/module mkdir service }
Le but c'est de se connecter en user "bea", entrer dans le répertoire /appli/module et créer le répertoire.
- Il se connecte en "bea" mais il ne se met pas dans le répertoir /appli/module
- Quand je fais un "exit" il reprend la connexion en "root" et crée le répertoire
Qui peut m'aider pour la syntaxe ??
Merci
Windows / Edge 110.0.1587.41
1 réponse
Bonjour,
C'est normal : la commande cd /appli/module ne s'exécute qu'une fois la commande su - terminée.
Avant de répondre, plusieurs questions :
- Est-ce que appli/modules est à la racine / (et donc c'est bien /appli/modules) ou dans le home de bea (donc typiquement ~bea/appli/module) ? J'ai l'impression que tu es plutôt dans le deuxième cas de figure...
- Pourquoi faire un cd quand tu peux créer un dossier de n'importe où ?
mkdir -p ~bea/appli/module/service
- Quel est l'intérêt de passer en "bea" si tu es déjà en root (tu as déjà des droits suffisants pour le faire, quitte à changer le propriétaire du dossier créé a posteriori) ?
Ensuite, pour répondre à ton problème initial, tu peux passer une commande à su avec l'option -c.
Exemple :
(root@silk) (~) # su - mando -c whoami
mando
Si tu as plusieurs commandes à passer :
(root@silk) (~) # su - mando -c "whoami ; whoami ; whoami"
mando
mando
mando
Bonne chance