Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
sh et bash ?
Envoyé par: jacqueline

J'ai déjà posé la question et me suis vraiment donnée la peine de chercher.. ( aussi mon sujet est assez long ), mais elle est passée dans les oubliettes puisque les sujets ne remontent plus...

J'ai encore cherché et lu pas mal de docs, mais je ne trouve pas une explication et je suis coincée, aussi j'insite. Si qqun pouvait m'aider, ce serait sympa.


Souvent on lit dans les questions posées sur les forums à ce sujet que le shell sh n'est qu'un lien symbolique vers le bash.

or à la lecture d'un document sur le shell où me renvoie léa, j'ai bien le sentiment que ce sont deux shells indépendants. ( et le sh serait celui de base commun à tous les systèmes linux : le Bourne shell).

Je pense que l'explication de lien symbolique est un peu floue pour ne pas dire fumeuse... ( je m'excuse ) mais celà crée beaucoup de confusion

Quelqu'un peut il me confirmer que ce sont bien deux shells indépendants possédant chacun leur propre interpréteur de commandes et le bash plus récent disposerait de plus de commandes ?

Dans etc/passwd, il est indiqué par l'installation de linux, que tous mes utilisateurs y compris le root seraient affectés au shell bash. Donc toutes leurs commandes sont interprétées par le bash !


J'ai lu dans ce document que les fichiers de cde s'adressant à sh commence tous par #! /bin/sh.

C'est bien le cas des scripts de kdevelop.

Si un spécialiste pouvait me confirmer que c'est bien ainsi qu'on dirige les commandes d'un script vers le shell sh ?

et Kdevelop utiliserait donc le shell sh parce que c'est le shell commun à tous les sytèmes linux.


Comment travaille-t-on avec le sh ?

Ce cas n'est pas toujours bien traité, mais j'ai trouvé qu'en terminal on passait d'un shell à l'autre en tappant sh; ou bash; après ces commandes, le prompt change, confirmant qu'on est sous tel ou tel shell et qu'ils sont bien indépendants.

Pourquoi cette question "tordue" ?

D'abord parce que je débute et ensuite parce que mon kdevelop "plante" lors de la création d'un projet et encore : parce ce que je cherche d'où vient ce problème avant de bidouiller n'importe quoi au hasard ( est ce un tort ?)

kdevelop sort une ERREUR sur cette commande d'un de ses scripts lancé à la création du projet :

"sh: ./configure: /bin/sh: bad interpreter: Permission non accordée".

J'ai commencé par chercher dans les droits et sur des exemples similiaires avec google : certains ont bricolé les droits, pour se donner les droits root se faisant rappeller à l'odre car c'est dangereux pour le système, mais les explications se sont arrétées là! J'ai les mêmes droits sur bash et sh, il me semble donc que ce n'est pas un problème de droits.

Il me semblait plus logique et moins risqué de déclarer le shell sh dans /etc/passwd pour l'utilisateur qui utilise kdevelop, mais ça ne change rien à l'affaire.. damned !

Je BLOQUE complètement là !

(Je n'ose pas penser qu'il y a un problème dans kdevelop , mais que c'est un petit problème de config quelque part)

Auparavant kdevelop me dit après ce dernier message :

*** Finished

avant de lancer son script de création de projet qu'il vient de préparer en fonction de la nature de mon projet :

Don't forget to run ./configure
If you haven't done so in a while, run ./configure --help

mais kdevelop enchaîne sans me laisser le temps de tapper cette commande : ./configure.

Si j'essaye de le faire manuellement dans un terminal, il me répont : commande not found avec le bash, comme avec le sh.


Enfin dernière question :

A quoi sert cette commande du script ?

sh: ./configure: /bin/sh:

Celà veut il dire que kdevelop veut configuer le shell /bin/sh pour pouvoir faire son travail de compilation en lançant ses commandes sur le sh ?

et puis cette autre en prime :

Une commande qui commance par ./ c'est bien une cde en superutilisateur ? donc je ne vois pas où est le problème de droits qu'il faudrait changer pour que ça marche.


Scusez moi, je débute.

Merci de vos réponses , mêmes brèves..

Jacqueline.



PS : au cas où un expert de kdevelop voudrait bien me répondre. ( kdevelop me paraît un super outil, aussi je m'acharne et en plus ça me fait poser plein de questions intéressantes , mais qui dépassent un peu mes compétences actuelles )

J'ai lu un des premiers scripts que lance kdevelop. dans les commentaires, il cherche quels shells sont installés dans mon système ( pour savoir avec lequel il va bosser, je suppose : là je n'ai pas d'erreurs.

Plus loin après cette erreur sur le bin/sh, il me sort une autre errur que j'ai pu remonter avec ses indications de numéro de ligne.

Il teste un fichier avec une cde , juste après une commande avec grep et me retourne cette erreur sur le test: TROP d'ARGUMENTS dans cette commande.

Bizarre, ça devrait rouler tout seul!

On pourrait aussi penser que mon shell sh est mal configuré pour sortir trop d'arguments à passer à l'autre commande ? Ce ne sont pas les gens de kdevelop qui se sont plantés... je le crois pas , ce serait prétentieux de ma part.

Merci !



Poste le Saturday 16 October 2004 10:55:56
Répondre     Citer    
Re: sh et bash ?
Envoyé par: Pascal14

Bonjour,

Je ne connais pas kdevelop mais normalement sh a été le premier shell crée et bash est normalement compatible avec lui.
sh ne figure pas sur les distributions Linux (je ne les connais toutefois pas toutes, loin s'en faut) mais sous forme de lien vers bash (en général).
Ainsi, en appelant sh, c'est bash qui est lancé. Toutefois, bash ne se comporte pas toujours de la même façon selon qu'il est appelé directement ou via sh.
Quelques pages, si elles sont correctes, abordent ce sujet:
[gershwin.ens.fr]
et
[linuxreviews.org]
(faire une recheche à partir de ' sh ' (espace avant et après) pour trouver les paragraphes ou sh est évoqué)
ou encore:
[www.orgalinux.com]

Pour le problème de sh, c'est peut-être expliqué ici:
[www.fr.linuxfromscratch.org]

Pour le . avant la commande, il sert à lancer la commande dans l'environnement courant.

Bon courage.

Poste le Saturday 16 October 2004 13:08:58
Répondre     Citer    
Re: sh et bash ?
Envoyé par: RemiC

Citation
jacqueline
J'ai déjà posé la question et me suis vraiment
donnée la peine de chercher.. ( aussi mon sujet
est assez long ), mais elle est passée dans les
oubliettes puisque les sujets ne remontent
plus...
Le mieux serait peut-être de poser plusieurs "petites" questions.

Citation
jacqueline
Je pense que l'explication de lien symbolique est
un peu floue pour ne pas dire fumeuse... ( je
m'excuse ) mais celà crée beaucoup de confusion
Mais c'est comme ça. Linux n'est plus fournie avec le Bourse-sh mais uniquement avec la bash. Mais comme il y a compatibilité...
Effectivement bash lorsqu'il s'appelle sh réagit un peu différement lors du lancement (fichier de démarrage)

Citation
jacqueline
Quelqu'un peut il me confirmer que ce sont bien
deux shells indépendants possédant chacun leur
propre interpréteur de commandes et le bash plus
récent disposerait de plus de commandes ?
Bin non, pas sous Linux.

Citation
jacqueline
Dans etc/passwd, il est indiqué par
l'installation de linux, que tous mes
utilisateurs y compris le root seraient affectés
au shell bash. Donc toutes leurs commandes sont
interprétées par le bash !
C'est ce shell qui sera lancé au moment de la connexion. Ensuite ils font ce qu'ils veulent.

Citation
jacqueline
J'ai lu dans ce document que les fichiers de cde
s'adressant à sh commence tous par #! /bin/sh.

C'est bien le cas des scripts de kdevelop.

Si un spécialiste pouvait me confirmer que c'est
bien ainsi qu'on dirige les commandes d'un script
vers le shell sh ?
Oui

Citation
jacqueline
...
A quoi sert cette commande du script ?

sh: ./configure: /bin/sh:
Celà veut il dire que kdevelop veut configuer le
shell /bin/sh pour pouvoir faire son travail de
compilation en lançant ses commandes sur le sh ?
Non: configure est un script destiné à "configurer" le Makefile qui servira ensuite a compiler le projet. Cette configuration correspond à une analyse du système pour adapté les options en fonction.

Citation
jacqueline
et puis cette autre en prime :

Une commande qui commance par ./ c'est bien une
cde en superutilisateur ? donc je ne vois pas où
est le problème de droits qu'il faudrait changer
pour que ça marche.
Non, cela signifie que la commande se trouve dans le répertoire courant (qui ne fait partie par défaut du PATH, contraitement à un autre OS assez connu).

Citation
jacqueline
Scusez moi, je débute.
J'en découvre encore chaque jour (et c'est tant mieux).

Citation
jacqueline
Merci de vos réponses , mêmes brèves..

Jacqueline.
...
Merci !
Pas de quoi...

P.S. : je na parle par du tout de kdevelop que je ne connais absolument pas

Poste le Saturday 16 October 2004 13:53:46
Répondre     Citer    
Re: sh et bash ?
Envoyé par: RemiC

Je confirme aussi ce que dit Pascal14 (nos posts se sont croisés). Les 2 premiers articles sont effectivement trés précis/intéressant sur le sujet.

On peut aussi préciser que si Linux ne fournit pas sh ou ksh (que j'ai découvert sous d'autres Unix avant bash) c'est un problème de licence.

A+

Poste le Saturday 16 October 2004 14:07:15
Répondre     Citer    
Re: sh et bash ?
Envoyé par: mathieu

le ksh est dispo sous toutes les distribu linux, mais sous le nom de pdksh! et il n'est pas installer par defaut!

de toute façon bash accepte presque toute les option de ksh et en fais sait faire plus de chose...

ksh est dispo sur tous les os unix et ce comporte à presque 100% pareil partout...

il y a deux version de ksh: ksh88 le plus courament trouver et le ksh93!

sur www.kornshell.com il y a plein d'info sur le sujet...

et sh vien de bsd... et a servie de base pour developper ksh et bash...

sinon l'autre shell historique c'est csh! la version libre s'appel tcsh!
mais bon apres c'est une question de gout!

les pur linuxman peuvent ce concentre sur bash... et ceux qui doivent travailler sur d'autre unix on interret a maitriser ksh...

Mat

Poste le Saturday 16 October 2004 14:19:41
Répondre     Citer    
Re: sh et bash ?
Envoyé par: jacqueline

Merci Pascal Rémi et Mathieu de m'avoir répondue.

Je cours vers les liens que voux m'avez donnés.

Dans le doute j'avais installé d'autres paquetages de shells différents..puisque kdevelop les teste. ( je dois avoir toute la collection.)J'ai la Suse , c'est peut être différent des autres distribs.

Effectivement il faut que je regarde le shell qui est lancé au démarrage ( j'avais oublié !!! )

Si ça se trouve il faut que je désinstalle /bin/sh puisque kdevelop marche sur des distribs qui ne l'ont pas...

Je comprends dans vos propos que si on a que bash, on peut lui adresser des commandes de sh, il va les comprendre mais peut être les traiter différemment


Donc la descprition de la commande configure serait faite dans un fichier "annexe" de /bin/sh ou de /bin/bash qui se trouverait dans mon rep /home / fichiers cachés de kde, je vais déjà regarder s'il existe et ce qu'il y a dedans.

Trop drôle , je ne voulais me servir que d'interfaces graphiques avec linux pour éviter de tapper des commandes... Finalement je suis allée plus loin dans le shell. Lol ! Mais c'est ça qui est bien avec linux et qui me servira pour plein d'autres choses...


Faudra que petêtre j'apprenne à faire un script, mais pourquoi pas.

Puis les configure et makefile


Merci à vous. Génial linux !

Jaqueline

Poste le Sunday 17 October 2004 12:36:38
Répondre     Citer    
Re: sh et bash ?
Envoyé par: jacqueline

Merci pour cette doc !

Effectivement, c'est très détaillé et très clair en français en plus.

Un peu complexe, mais plein de fonctionnalités, à connaître par coeur (tout du moins les principes)

Je découvre qu'on peut configuer son shell, ce qui n'est peut être pas fait correctement à l'install de base ( vu le nombre de gens qui n'arrivent pas à accéder à telle ou telle application... avec la même erreur )

Je découvre la cde de changement de shell,lorsqu'on en a plusieurs.

Finalement je comprends les personnes qui font les installs à la main, mais ça me dépasse encore..


Je suis presque sûre que kdevelop a trouvé /bin/sh ( avec tous les tests qu'il fait au début )et qu'il essaye de bosser avec.. Mais en me connectant en utilisateur auquel on a affecté bash, il ne trouve plus ses billes, lorsqu 'on se connecte en tant qu'utilisateur avec bash

L'autre jour j'ai bien fait le changement de shell dans /etc/passwd, pour mon utilisateur de kdevelop mais je n'ai pas relancé la connection... ( comme indiqué dans cette doc ) et ça n'a donc pas été pris en compte lorsque j'ai relancé kdevelop.


Je serais presque tentée de désinstaller sh, car plusieurs shells ça complique trop et qu'un seul suffit ! kdevelop devrait pouvoir se débrouiller avec bash.

Mais avec Suse : /bin/sh est installé automatiquement avec le paquetage bash !!!!


Le supprimer ou le renommer à la main..???

Mais avant je cherche encore.


Poste le Sunday 17 October 2004 13:55:55
Répondre     Citer    
Re: sh et bash ?
Envoyé par: Pascal14

Bonjour,

Citation

Je serais presque tentée de désinstaller sh, car
plusieurs shells ça complique trop et qu'un seul
suffit !

Cela doit être assez risqué dans la mesure où certains scripts utiisent sh.
Je ne connais pas la Suse mais cela doit être le cas.
Tu devrais peut-être essayer juste de renommer sh avant de faire une bêtise. Il suffira de lui redonner son nom initial si cela pose problème.
Au demeurant, cela ne doit être qu'un lien vers /bin/bash.
Pour kdevelop et le problème "sh: ./configure: /bin/sh: bad interpreter: Permission non accordée", as-tu vérifié qu'il ne s'agissait pas d'un problème d'option sur la partition (montée avec l'options 'users').

Bon courage.

Poste le Sunday 17 October 2004 23:33:28
Répondre     Citer    
Re: sh et bash ?
Envoyé par: jacqueline

lol !

Ca marche !


Merci pour le tuyau ( ma /home était montée avec l'option users ...)

Je l'ai enlevée ça a tout débloqué..

Par contre j'ai plein d'autres erreurs de lib parce que je suis partie d'une install minimale et que j'ai rajouté les paquetages presque un par un, mais il en manque toujours...et j'en ai plein d'autres qui ne servent à rien.


Pour la /home mon système n'a pas du tout aimé l'option "default" par contre... Pas grave, maintenant je sais...


J'ai refait une install complète par "fonctions entières " ( ça fait un mois que je torture mon sytème, il fallait remettre un peu d'ordre et surtout faire le ménage.

Heureusement que je n'avais pas viré /bin/sh : il y a plein de "trucs " qui l'utilisent.

Merci pour l'info ! celle là, je ne l'oublierais pas.


Jacqueline

Poste le Monday 18 October 2004 07:57:18
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
sh et bash ?
Un problème avec une commande du shell ? Comment utiliser la crontab ? Vous avez des soucis pour la gestion réseau sous Linux ? Pour vous la gestion des utilisateurs/groupes est du chinois ? Etc... Posez donc vos questions ici.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons