[Bash] Variable $USER et CronTab
Résolu
Creutzou
Messages postés
550
Date d'inscription
Statut
Membre
Dernière intervention
-
Creutzou Messages postés 550 Date d'inscription Statut Membre Dernière intervention -
Creutzou Messages postés 550 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Débutant dans le script bash, j'arrive grosso-modo à mes fins. Sauf que je bloque sur un point.
Je copie des répertoires utilisateurs et j'utilisais une variable $USER pour ne pas avoir à rentrer le nom complet. ( exemple /home/$USER/RepAcopier ).
Quand j'excute le script de depuis la session celà fonctionne, seulement quand je passe avec CronTab , il ne prends pas en compte la variable $USER. Cela me semble normal, mais je ne vois pas comment evincer le problème.
Est ce ma façon de faire qui n'est pas bonne, ou existe t'il une solution à mon problème ?
En vous remerciant d'avance ,
ps: voici mon petit script.
Je ne suis pas un geek, juste un humain 2.0
~~ Cr3u7z0u ~~
Débutant dans le script bash, j'arrive grosso-modo à mes fins. Sauf que je bloque sur un point.
Je copie des répertoires utilisateurs et j'utilisais une variable $USER pour ne pas avoir à rentrer le nom complet. ( exemple /home/$USER/RepAcopier ).
Quand j'excute le script de depuis la session celà fonctionne, seulement quand je passe avec CronTab , il ne prends pas en compte la variable $USER. Cela me semble normal, mais je ne vois pas comment evincer le problème.
Est ce ma façon de faire qui n'est pas bonne, ou existe t'il une solution à mon problème ?
En vous remerciant d'avance ,
ps: voici mon petit script.
#!/bin/bash if [ -e "/home/$USER/baseDuJour/bases_$(date +%k)h.zip" ] then rm /home/$USER/baseDuJour/bases_$(date +%k)h.zip fi zip -r /home/$USER/baseDuJour/bases_$(date +%k)h.zip /home/$USER/temp/* rm /home/$USER/temp/*
Je ne suis pas un geek, juste un humain 2.0
~~ Cr3u7z0u ~~
A voir également:
- [Bash] Variable $USER et CronTab
- User account control - Guide
- Bingo bash free - Télécharger - Divers Jeux
- Bash addition ✓ - Forum Shell
- User is over quota - Forum Mail
- [Bash]Impossible de faire une simple addition - Forum Shell
3 réponses
Pour commencer je te conseille d'utiliser $HOME plutôt que $USER, car le home n'est pas forcément dans /home (par exemple pour root, c'est /root). Ensuite, il faut voir si quand tu lances crontab, ces variables d'environnement sont initialisées comme tu le crois. Tu peux par exemple lancer dans ton script :
... pour être fixé.
En admettant que ton utilisateur soit toto, comme il y a peu de chance que crontab soit lancé par toto, il y a peu de chance que $USER (resp. $HOME) soit initialisé à la valeur que tu espères.
Sous linux chaque utilisateur est identifié par un UID (entier indiqué dans /etc/passwd), et l'utilisateur "principal" sous ubuntu correspond en général à l'utilisateur 1000. Tu peux donc dans ton script bash récupérer le nom de l'utilisateur et son home associés à l'UID 1000 comme suit :
Bonne chance
echo "USER=[$USER]" > /tmp/toto.txt
... pour être fixé.
En admettant que ton utilisateur soit toto, comme il y a peu de chance que crontab soit lancé par toto, il y a peu de chance que $USER (resp. $HOME) soit initialisé à la valeur que tu espères.
Sous linux chaque utilisateur est identifié par un UID (entier indiqué dans /etc/passwd), et l'utilisateur "principal" sous ubuntu correspond en général à l'utilisateur 1000. Tu peux donc dans ton script bash récupérer le nom de l'utilisateur et son home associés à l'UID 1000 comme suit :
#!/bin/bash UID=1000 USER=$(cat /etc/passwd | cut -d":" -f1,3,6 | grep 1000 | cut -d":" -f1) HOME=$(cat /etc/passwd | cut -d":" -f1,3,6 | grep 1000 | cut -d":" -f3) #suite de ton script
Bonne chance