[initscripts] /etc/rc.d/functions: syntax error (résolu)

Applications, problèmes de configuration réseau
Répondre
Avatar de l’utilisateur
Vinvin
yeomen
Messages : 290
Inscription : ven. 14 déc. 2007, 14:37
Localisation : Rennes

[initscripts] /etc/rc.d/functions: syntax error (résolu)

Message par Vinvin »

Bonjour. :D

Depuis la mise-à-jour du paquet initscripts vers la version 2011.11.3-1 (sous Archlinux 32 bits), je rencontre fréquemment cette erreur lorsque des scripts sont lancés :
$ /etc/rc.d/un_script start

/etc/rc.d/functions: line 497: syntax error near unexpected token `<'
/etc/rc.d/functions: line 497: ` done < <(findmnt -runRo TARGET,FSTYPE,OPTIONS / | tac)'
$ /etc/rc.d/un_autre_script stop

/etc/rc.d/functions: line 497: syntax error near unexpected token `<'
/etc/rc.d/functions: line 497: ` done < <(findmnt -runRo TARGET,FSTYPE,OPTIONS / | tac)'
Cette erreur n'apparaît qu'avec certains scripts, pas avec tous. :!:

Voici une partie du fichier incriminé, avec la ligne en question :

Code : Tout sélectionner

$ cat /etc/rc.d/functions

Code : Tout sélectionner

[…]
umount_all() {
	# $1: restrict to fstype

	local mounts

	while read -r target fstype options; do

		# match only targetted fstypes
		if [[ $1 && $1 != "$fstype" ]]; then
			continue
		fi

		# don't unmount API filesystems
		if [[ $target = /@(proc|sys|run|dev|dev/pts) ]]; then
			continue
		fi

		# avoid networked devices
		IFS=, read -ra opts <<< "$options"
		if in_array _netdev "${opts[@]}"; then
			continue
		fi

		mounts+=("$target")
	done < <(findmnt -runRo TARGET,FSTYPE,OPTIONS / | tac)

	umount -r "${mounts[@]}"

}
[…]
Avez-vous la même erreur chez vous ? Que dois-je faire pour la corriger ?

Merci. :chinois:
Dernière modification par Vinvin le dim. 20 nov. 2011, 13:10, modifié 1 fois.
Avatar de l’utilisateur
drs
archer de cavalerie
Messages : 158
Inscription : ven. 15 sept. 2006, 06:47

Re: [initscripts] /etc/rc.d/functions: syntax error

Message par drs »

change

Code : Tout sélectionner

#!/bin/sh
par

Code : Tout sélectionner

#!/bin/bash
Avatar de l’utilisateur
Vinvin
yeomen
Messages : 290
Inscription : ven. 14 déc. 2007, 14:37
Localisation : Rennes

Re: [initscripts] /etc/rc.d/functions: syntax error

Message par Vinvin »

Merci Drs pour cette réponse rapide, c'était ça. :applaudit:

Les scripts qui posaient problème commençaient par

Code : Tout sélectionner

#!/bin/sh
Le problème est résolu en remplaçant par

Code : Tout sélectionner

#!/bin/bash
:merci:
Avatar de l’utilisateur
Anthony25
Hankyu
Messages : 12
Inscription : mar. 13 sept. 2011, 22:54

Re: [initscripts] /etc/rc.d/functions: syntax error (résolu)

Message par Anthony25 »

Salut,
Chez moi c'est déjà marqué #!/bin/bash et j'ai quand même une erreur.

Tu es sûr que ce n'est pas plutôt une coquille à la ligne 497 ?

Car si je remplace

Code : Tout sélectionner

done < <(findmnt -runRo TARGET,FSTYPE,OPTIONS / | tac)
Par

Code : Tout sélectionner

done < $(findmnt -runRo TARGET,FSTYPE,OPTIONS / | tac)
Je n'ai plus d'erreur.
Avatar de l’utilisateur
Vinvin
yeomen
Messages : 290
Inscription : ven. 14 déc. 2007, 14:37
Localisation : Rennes

Re: [initscripts] /etc/rc.d/functions: syntax error (résolu)

Message par Vinvin »

Anthony25 a écrit :Tu es sûr que ce n'est pas plutôt une coquille à la ligne 497 ?
Je n'en sais rien.
Chez moi, plus d'erreur depuis que mes scripts n'ont plus de

Code : Tout sélectionner

#!/bin/sh
Je ne suis pas développeur, j'ignore si il y a une erreur dans la ligne 497. Si il y en a vraiment une, vous devriez être nombreux à en souffrir : il y aurait de nombreuses infos sur Internet.

Chez toi, cette erreur survient avec tous les scripts, ou avec certains seulement ? Quels sont les scripts en question ?
Avatar de l’utilisateur
Anthony25
Hankyu
Messages : 12
Inscription : mar. 13 sept. 2011, 22:54

Re: [initscripts] /etc/rc.d/functions: syntax error (résolu)

Message par Anthony25 »

Bumblebee, utilisé pour les cartes Optimus (système de cartes graphiques hybrides) et c'est tout.

Si je remplace la ligne 497 du fichier /etc/rc.d/functions par celle que j'ai mis plus haut, je n'ai plus d'erreur. Je voulais demander confirmation pour vérifier que ça soit correct.

Edit : et surtout si je n'applique pas ma correction, j'ai droit à un gros plantage lors de reveil de mon laptop après une mise en veille (en gros bumblebee, qui est censé réveiller uniquement ma carte intel, plante). Là tout marche impec.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17235
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [initscripts] /etc/rc.d/functions: syntax error (résolu)

Message par benjarobin »

Tout ce que je peux dire c'est que c'est ce commit qui a produit le problème : http://projects.archlinux.org/initscrip ... 902876dfa3
Cela m'étonnerait que "< <(cmd)" soit une syntaxe valide, "< $(cmd)" me semble mieux, mais je suis plutôt "débutant" en bash.
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
Anthony25
Hankyu
Messages : 12
Inscription : mar. 13 sept. 2011, 22:54

Re: [initscripts] /etc/rc.d/functions: syntax error (résolu)

Message par Anthony25 »

Moi aussi, et je pense comme toi ^^
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17235
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [initscripts] /etc/rc.d/functions: syntax error (résolu)

Message par benjarobin »

Bug rapporté: https://bugs.archlinux.org/task/27213
Au pire je me fais jeter :-)

Edit: Je me suis bien fais jeté, j'aurais du vérifier avant :oops:
Ce n'est pas un bug !!! Voir manuel de bash, attention sh ne devrait plus être utilisé

@Anthony25 Recherche /bin/sh dans tous les script de ton ordinateur lié à bumblebee important /etc/rc.d/functions
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10707
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [initscripts] /etc/rc.d/functions: syntax error (résolu)

Message par FoolEcho »

Tu n'es pas le premier à te faire avoir déjà. :D
Ceci dit, je ne connaissais pas non plus (je me suis d'ailleurs interrogé en voyant le sujet :mrgreen: ). C'est propre au shell bash, pour les curieux: http://docstore.mik.ua/orelly/unix/upt/ch09_18.htm.
«The following statement is not true. The previous statement is true.» :nage:
Avatar de l’utilisateur
Anthony25
Hankyu
Messages : 12
Inscription : mar. 13 sept. 2011, 22:54

Re: [initscripts] /etc/rc.d/functions: syntax error (résolu)

Message par Anthony25 »

Merci benjarobin, tu avais raison : le script /etc/rc.d/bumblebee contient #!/bin/sh et il appelle /etc/rc.d/functions qui lui utilise une syntaxe propre au bash comme l'a dit FoolEcho => problème

J'ai modifié le script bumblebee en mettant #!/bin/bash et tout est rentré dans l'ordre. Je l'ai aussi signalé aux dev.

Merci à vous deux ;)
Répondre