GNU/Linux >> Tutoriels Linux >  >> Linux

.bash_profile n'est pas fourni lors de l'exécution de Su ?

J'ai un utilisateur, dites user1 , qui a des modifications sur son .bash_profile , l'un d'eux changeant le PATH , par exemple :export PATH=/some/place:$PATH . Ce changement fonctionne bien si je me connecte en tant que user1 ou faites un su - user1 .

Mais si j'essaie d'exécuter une commande via su en tant que root , par exemple :

su -c test.sh oracle

(le test contient echo $PATH )

Il ne semble pas avoir le PATH modifié (ou le PATH de la racine , d'ailleurs). J'ai aussi essayé de copier .bash_profile vers .profile , en vain.

Pourquoi cela se produit-il ?

Réponse acceptée :

Utilisation de su sans -l ou - lance bash en tant que shell interactif, mais sans connexion, qui ne lit aucun des fichiers que vous avez spécifiés. Utilisez le -l ou - ou placez la configuration appropriée dans /root/.bashrc .

Résumé rapide des fichiers de configuration :

  • Interface de connexion (-l /--login ) lit /etc/profile d'abord, puis le premier qu'il trouve :~/.bash_profile , ~/.bash_login , et ~/.profile .
  • Shell interactif mais sans connexion (-i ) lit /etc/bash.bashrc et ~/.bashrc , dans cet ordre (sauf si le --rcfile est utilisée et lui dit de chercher ailleurs).
  • Des coques non interactives, par ex. démarré depuis un autre programme sans utiliser le -l ou -i flags, lit le fichier spécifié dans le BASH_ENV variable d'environnement.
  • Lorsqu'il est exécuté en tant que sh en tant que shell de connexion, il lira /etc/profile et ~/.profile , dans cet ordre.
  • Lorsqu'il est exécuté en tant que sh en tant que non-login interactif, il lit le fichier spécifié dans ENV .

Linux
  1. Suggérer l'installation de packages lors de l'exécution d'une commande non disponible

  2. [OpenStack-Devstack] :Erreur :le service n-net ne s'exécute pas lors de l'exécution de stack.sh

  3. Pourquoi ajouter ~/.profile à ~/.bash_profile ?

  4. Impossible de supprimer le fichier, même lors de l'exécution en tant que root ?

  5. CronJob ne fonctionne pas

Supprimer la mémoire partagée posix lorsqu'elle n'est pas utilisée ?

GLIBCXX_3.4.9 introuvable lors de l'exécution de ffmpeg à partir de php sur le serveur lampp

Module introuvable lorsque je fais un modprobe

Comment afficher une tâche cron en cours d'exécution ?

commande introuvable lors de l'utilisation de sudo

la tâche cron ne s'exécute parfois pas