IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Problème en bash


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 68
    Par défaut Problème en bash
    Bonjour,

    Mes dernières utilisations d'un script shell date un peu, et j'ai du m'y remettre. Et j'ai un petit problème. Voici mon script (tout simple !!!) :

    #!/bin/bash

    function main()
    {

    if test -f fichier
    then
    echo "Fichier d'options déjà existant"
    else
    touch fichier
    chmod u+rwx fichier
    fi

    }

    main

    -------------------------

    J'ai un joyeux touch : commande introuvable
    chmod : commande introuvable

    Alors qu'elles fonctionnent très bien dans un terminal ... Je comprends vaiment vraiment pas !!!

    Merci pour votre aide

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 667
    Par défaut
    Bonjour syl,

    ajoute un PATH dans ton script.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/bin/bash
     
    PATH=/usr/bin:/bin
     
    ...
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 68
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    Bonjour syl,

    ajoute un PATH dans ton script.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/bin/bash
     
    PATH=/usr/bin:/bin
     
    ...
    Merci N_BaH, effectivement ça a suffit ... cependant, en reprenant des vieux projets, je n'avais jamais eu à utiliser cette ligne ... est-ce du à l'OS sur lequel on travaille ? (là je suis sur Kubuntu, je crois me rappeler que j'étais sur Solaris à l'époque)

    Syl

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 667
    Par défaut
    Je n'ai pas à le faire sur Debian, sauf pour les scripts lancés par cron. Et encore... j'ai ajouté un PATH permanent directement dans mes crontab.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 845
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par syl1405 Voir le message
    Merci N_BaH, effectivement ça a suffit ... cependant, en reprenant des vieux projets, je n'avais jamais eu à utiliser cette ligne ... est-ce du à l'OS sur lequel on travaille ? (là je suis sur Kubuntu, je crois me rappeler que j'étais sur Solaris à l'époque)

    Syl
    Toutes les distributions Linux se valent dans les grandes lignes... mais peuvent différer pour certains détails (l'importance du détail est à l'appréciation de l'utilisateur)

    Il est probable que dans ton environnement kubuntu (distribution résolument orientée vers les néophytes), le PATH ne soit pas bien complètement configuré (parce que les développeurs ont pensé que personne n'en aurait besoin vu que les gens qui utilisent kubuntu ne sont pas sensés taper dans le scripting). Mais ça peut se modifier (voir /etc/profile et/ou /etc/profile.d/path.sh)

    Si t'avais été sur Debian (distribution faite pour ceux qui tapent dans le système à tour de bras), ton script aurait fonctionné. Accessoirement, tu peux remplacer
    par
    Cela aura le même résultat sans passer par la commande touch (dont le but initial n'est pas la création de fichier)

    PS: concernant le chmod u+rwx, cela ne me semble pas utile. Il est quasiment certain que ton umask est positionné pour que ton fichier ait déjà les droits u=rw. Et si vraiment il te faut le droit x (ce qui semblerait étonnant pour un simple fichier de paramètres), alors chmod u+x suffit...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 68
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Si t'avais été sur Debian (distribution faite pour ceux qui tapent dans le système à tour de bras), ton script aurait fonctionné. Accessoirement, tu peux remplacer
    par
    Cela aura le même résultat sans passer par la commande touch (dont le but initial n'est pas la création de fichier)
    Oui c'est vrai. Le souci est que je créé des fichiers dans les répertoires /etc, ce qui requiert en fait des droits particulier (sachant qu'un utilisateur quelconque peut exécuter le script). Donc j'ai besoin de faire "sudo touch". D'ailleurs, ça me pose un autre problème. J'ai créé un fichier (avec sudo) dans /etc/ppp/peers, mais quand je veux écrire des trucs dedans (echo truc >> fichier), je n'en ai pas le droit, même en modifiant les droits du fichier, certainement parce que le dossier lui-même n'est pas ouvrable .

    Auriez-vous une idée s'il vous plait ?

    merci

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 845
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 845
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par syl1405 Voir le message
    Oui c'est vrai. Le souci est que je créé des fichiers dans les répertoires /etc, ce qui requiert en fait des droits particulier (sachant qu'un utilisateur quelconque peut exécuter le script).
    Non. Si le script écrit dans /etc alors seul root devra avoir le droit de l'exécuter.
    Citation Envoyé par syl1405 Voir le message
    Donc j'ai besoin de faire "sudo touch"
    Ben non. Tu crées ton script dans la philosophie "c'est root qui l'exécute" donc tu t'embêtes pas avec les sudo.
    Et si un utilisateur quelconque a besoin de lancer le script, alors l'utilisateur appellera sudo le_script

    Citation Envoyé par syl1405 Voir le message
    D'ailleurs, ça me pose un autre problème. J'ai créé un fichier (avec sudo) dans /etc/ppp/peers, mais quand je veux écrire des trucs dedans (echo truc >> fichier), je n'en ai pas le droit, même en modifiant les droits du fichier, certainement parce que le dossier lui-même n'est pas ouvrable .

    Auriez-vous une idée s'il vous plait ?
    Si le fichier "/etc/ppp/peers" existe déjà, alors
    Il faut que les dossiers "/", "/etc" et "/etc/ppp" aient au-moins le droit x
    Il faut que le fichier "/etc/ppp/peers" ait le droit w

    Si le fichier "/etc/ppp/peers" n'existe pas, alors
    Il faut que les dossiers "/" et "/etc" aient au-moins le droit x
    Il faut que le dossier "/etc/ppp" ait les droits wx
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème script bash (comparaison de string)
    Par nicoo04 dans le forum Linux
    Réponses: 2
    Dernier message: 26/01/2011, 22h23
  2. [SED+boucle] problème commande bash
    Par Amenos dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 14/05/2010, 14h44
  3. [BASH]Problème création d' un script
    Par crasho007 dans le forum Linux
    Réponses: 2
    Dernier message: 05/11/2007, 15h34
  4. [BASH] Problème dans une boucle IF
    Par coincoin22 dans le forum Linux
    Réponses: 3
    Dernier message: 16/08/2007, 09h34
  5. [BASH] problème alias, histoire de fork ?
    Par dosy07 dans le forum Administration système
    Réponses: 2
    Dernier message: 13/06/2007, 21h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo