le profil bash fonctionne pour l'utilisateur mais pas sudo

9

J'ai modifié mon .profile pour inclure un dossier si un lecteur flash est branché. Lors de l'exécution de la commande en tant qu'utilisateur, cela fonctionne bien mais me dit que le script doit être exécuté par sudo (c'est ce que je veux). Cependant, quand j'essaye de l'exécuter avec sudo j'obtiens "commande non trouvée"

J'ai un lien symbolique (flash) dans mon dossier / var / www pointant vers mon lecteur / media / flash. (peu importe que cette configuration soit juste pour le dev)

c'est le profil de mon utilisateur:

# set PATH so it includes flash scripts
if [ -d "/var/www/flash/scripts" ] ; then
    PATH="/var/www/flash/scripts:$PATH"
fi

en essayant de courir comme sudo j'obtiens:

sudo: script: command not found    

des idées?

user564448
la source

Réponses:

3

Lorsque vous exécutez le script lorsque sudovous essayez d'accéder à root. Donc, vous $HOME/.profilene serez pas accédé à la place /root/.profile.

Alors faire les changements que jamais vous avez fait dans $HOME/.profileà /root/.profile. Pour créer /root/.profile. Utilisez les commandes suivantes.

sudo su
cd /root
touch .profile

après avoir effectué les modifications, essayez d'exécuter le script.

ou modifiez $HOME/.bashrcet ajoutez la ligne suivante

alias sudo='sudo env PATH=$PATH $@'

J'espère que cela t'aides.

devav2
la source
J'ai essayé "alias sudo = 'sudo env PATH = $ PATH $ @'" mais j'obtiens "env: wp: Autorisation refusée"
user564448
Désolé, "wp" est le script
user564448
Essayez l'autre étape que j'ai mentionnée.
devav2
1
Lisez-le ici, vous devez l'utilisersudo su -p
devav2
2

Vous pouvez conserver la valeur de $PATHlors de l'utilisation sudo. Utilisez visudopour ajouter $PATHà la liste des variables à conserver. Une ligne comme la suivante /etc/sudoersdevrait faire l'affaire:

Defaults env_keep += "PATH"
Dennis Kaarsemaker
la source
1

c'est le comportement de sudo dans ubuntu ..

par exemple exécuter la commande suivante

echo 'echo $PATH' | sh

et que celui-ci

echo 'echo $PATH' | sudo sh 

vous voyez que la sortie est différente! pour éviter des chemins différents, mettez ce qui suit dans votre ~ / .bashrc

alias sudo='sudo env PATH=$PATH'
Christopher Jahnke
la source
Après avoir mis l'alias sudo = 'sudo env PATH = $ PATH' dans mon .bashrc, je reçois "env: wp: Autorisation refusée"
user564448
-1

Vous pouvez également déplacer votre fichier dans un répertoire utilisé par sudoers:

    sudo mv $HOME/bash/script.sh /usr/sbin/ 
LeGilles
la source