Probleme de syntraxe

Résolu/Fermé
jomod - Modifié le 16 févr. 2023 à 16:15
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 16 févr. 2023 à 16:23

Bonjour,

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.

  1. Il se connecte en "bea" mais il ne se met pas dans le répertoir /appli/module
  2. 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

mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
Modifié le 16 févr. 2023 à 16:25

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

0