Fonction dans .bashrc pour un script qui s'exécute au boot

Bonjour tout le monde,

Au démarrage de mon Raspberry Pi, je lance un script (start.sh). Ce script fait appel à une fonction toute bête que j’ai mise dans le fichier “~/.bashrc”. J’ai bien changé les droits sur le script avec un :

J’ai également ajouté le chemin vers le script dans la variable PATH : (dans ~/.bashrc)

La fonction dont j’ai besoin :

[code]function decode()
{
echo “$1” | base64 -d ; echo
}

export -f decode[/code]

J’ai essayé de rajouter la fonction dans le fichier “~/.bashrc” et ça n’a pas fonctionné. J’ai aussi essayé de l’ajouter dans le fichier “~/.bash_profile”, elle était alors accessible via SSH mais pas via la session locale ? :shifty:

J’ai essayé également d’ajouter la fonction dans le fichier “/etc/bash.bashrc” pour qu’elle soit accessible à tout le monde. Elle est alors accessible pour tout le monde mais le script qui se lance au démarrage n’arrive pas à l’utiliser.

Le script se lance bien au démarrage. (J’ai rajouté une écriture dans un fichier pour m’en assurer.)
Le script fonctionne si je le lance manuellement. La fonction “decode” fonctionne et il lance la session RDP. ("$ start.sh" pour le lancer)

Le problème, pour moi, vient du fait que la fonction “decode” n’est pas chargée avant que le script se lance. Pourtant, le fichier “/etc/bash.bashrc” est lancé à l’ouverture de la session, non ?
Si non, quel est le bon endroit où écrire cette fonction ?

Merci d’avance,

Esprit

PS : L’objectif de la fonction est de ne pas mettre le code “en clair” dans le script. Je me rends bien compte qu’une simple conversion en base64 est loin d’être suffisante ou sérieuse mais c’était un premier essais. Si vous avez d’autres idées, je suis preneur.

Annexes :
pi@RPi:~$ cat scripts/start.sh

[code]#!/bin/bash

#test création dossier
mkdir /home/pi/test01

#recharger le fichier .bashrc
. /home/pi/.bashrc & #utile ? pas efficace en tout cas…

user=Rpi***
export user
domain=***
export domain
passwd=decode Um********
export passwd
echo $passwd | tee /home/pi/fichier.txt #au boot, le fichier est créé mais vide.
#quand je lance manuellement le script, le code est dedans
adresseIP=10.2**.***.***
export adresseIP

sleep 10
rdesktop -f -u $user -d $domain -p $passwd $adresseIP &

echo “fin script” | tee /home/pi/fichier2.txt

exit 0[/code]

Le script est lancé via le fichier suivant :
pi@RPi-TC50:~$ cat .config/autostart/start.desktop

[Desktop Entry] Version=1.0 Name=Remmina Applet Comment=Se connecter aux bureaux distants via le menu de l'applet Icon=remmina Exec=/home/pi/scripts/start.sh Terminal=false Type=Application Hidden=false

Bonjour,

Je me suis passé de cette solution pour le moment mais si quelqu’un a une petite explication pour moi, je reste preneur. Je me permets donc un petit “up”. Et si ça n’intéresse vraiment personne, tant pis, le sujet sombrera dans les entrailles du web. :mrgreen:

Salut,

Sous KDE j’utilise /home/gerard/.kde/Autostart comme il est prévu.
Mes scripts manuels se trouvent en /home/gerard/bin comme il est prévu sous Debian
Leur lancement depuis .bashrc fonctionne ?

Non

[code]

System-wide .bashrc file for interactive bash(1) shells.

To enable the settings / commands in this file for login shells as well,

this file has to be sourced in /etc/profile.[/code]

.bashrc en $HOME

[code]

~/.bashrc: executed by bash(1) for non-login shells.

see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)

for examples[/code]

«for non-login shells». Sans login comme lorsque tu utilises un script à la façon de
$ bash script.sh

.profile

[code]# ~/.profile: executed by the command interpreter for login shells.

This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login

exists.

see /usr/share/doc/bash/examples/startup-files for examples.

the files are located in the bash-doc package.[/code]

login, «for login shells», login, ce qui entre en action à la connexion.

Bonjour à tous les deux et merci pour vos réponses,

[quote=“ggoodluck47”]Salut,
Sous KDE j’utilise /home/gerard/.kde/Autostart comme il est prévu.
Mes scripts manuels se trouvent en /home/gerard/bin comme il est prévu sous Debian
Leur lancement depuis .bashrc fonctionne ?[/quote]

Actuellement, j’ai un script “start.sh” dans /home/pi/scripts/ qui est lancé via un fichier “start.desktop” dans /home/pi/.config/autostart/ et ça fonctionne. Le script se lance bien au boot.
Là où je coince, c’est que j’aurais besoin de mettre un mot de passe dans le script (il ouvre une session RDP avec rdesktop) et que je voulais dissimuler un minimum ce mot de passe.

[quote=“etxeberrizahar”]
.bashrc en $HOME
(…)
«for non-login shells». Sans login comme lorsque tu utilises un script à la façon de
$ bash script.sh[/quote]

Donc .bashrc est lancé seulement à l’ouverture d’un shell. Mais pas à l’ouverture de session. Ok!

[quote=“etxeberrizahar”].profile
(…)
login, «for login shells», login, ce qui entre en action à la connexion.[/quote]

Donc, il faut que j’essaye de mettre ma fonction dans le fichier “.profile” car celui-ci est chargé lors de l’ouverture de la session. Je vais essayer au plus vite et je reviens vers vous pour vous tenir au courant.

Merci! :wink:

Pourquoi ne pas poster ce genre de fil dans “Programmation”.
Certains spécialistes de la prog ne passent pas dans SD et il me semble dommage de se priver de leurs compétences.

Bonjour Ricardo,

J’ai posté dans “Support Debian” car au départ c’est plus une question sur le fonctionnement de .bashrc et des fichiers qui sont chargés au démarrage mais si tu penses que le sujet a plus sa place dans “Programmation”, tu peux le déplacer sans soucis. (Je n’ai pas l’impression que je puisse le faire moi-même sans être modo?)

Esprit

Pour lancer des programmes en fin de boot :

Voir le fichier [mono]/etc/rc.local[/mono]

Merci agentsteel !

Il faut maintenant que j’assemble tout ce que vous m’avez dis et que je teste tout ça. :wink:

Bonjour a tous

Pourquoi ne pas passer par la crontab ? avec le parametre @boot ca le ferait non?

J’ai eu pas mal de taf sur d’autres projets, je n’ai plus eu l’occasion de réessayer avec les dernières suggestions… Désolé de ne pas avoir répondu aux derniers avant aujourd’hui. :blush: