Probleme de syntraxe

Résolu
jomod -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -

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

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     

    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