/ etc / profile non fourni

43

Pour 11.04, j'ai fait une nouvelle installation de mon système. Une partie de cette installation consistait à installer rvm , qui affiche un rvm.sh en /etc/profile.d/ . Cela ne fonctionne pas car /etc/profile (qui charge chaque + r dans /etc/profile.d/*.sh ) n'est pas chargé. Selon la documentation, le profil est uniquement généré si bash est exécuté lors de la connexion. Pour vérifier cela, j'ai appelé bash --login , après quoi rvm était disponible.

Cela a fonctionné pour moi dans les versions précédentes d'Ubuntu sans aucune configuration. En d'autres termes, une nouvelle installation de 10.10 générera correctement le profil / .d.

Ma question est la suivante: y a-t-il quelque chose que je fais mal, ou y a-t-il de nouvelles hypothèses dans Natty qui ont brisé cela? Ma solution actuelle consiste à utiliser source /etc/profile dans ~/.bashrc (ce qui est terrible car le profil est destiné à charger avant bashrc, mais fait l'affaire).

    
posée Marc 05.05.2011 - 11:22
la source

6 réponses

48

Par défaut, gnome-terminal ne lance pas bash en tant que shell de connexion (je suppose que vous voulez dire que bash a commencé dans un gnome-terminal). Cela signifie que bash ne lit pas /etc/profile ou ~/.profile . Comme vous l’avez observé correctement, bash lit ces fichiers s’il est démarré en tant que shell de connexion.

La solution rapide à votre problème consiste à configurer gnome-terminal pour qu'il démarre bash en tant que shell de connexion afin de lire /etc/profile . Pour ce faire, vous devez activer "Exécuter la commande en tant que shell de connexion" dans le gnome-terminal "Profile Preferences" accessible depuis le menu Edit.

Je ne recommande pas de faire cela car cela gâche la distinction entre ~/.profile et ~/.bashrc . Idéalement, ~/.profile devrait faire des choses qui ne sont requises qu'une seule fois, lors de la connexion, tandis que ~/.bashrc devrait faire les choses requises chaque fois que bash est démarré.

Il y a une question et réponse au super-utilisateur pour parler de la différence entre bashrc et profil . Lisez ici pour plus d'informations.

D'après votre description de problème, il semble que le script rvm ne doit être chargé qu'une seule fois, lors de la connexion. À ma connaissance, Ubuntu a configuré la connexion graphique pour lire /etc/profile/ et ~/.profile . Cela signifie que, après la déconnexion et la connexion une fois, le script rvm doit être actif. Si cela ne fonctionne toujours pas, alors le script rvm doit peut-être être chargé pour chaque session bash. Si tel est le cas, alors bashrc est l'endroit le plus approprié pour le script.

    
réponse donnée lesmana 05.05.2011 - 13:31
la source
5

Il existe cependant un fichier /etc/bash.bashrc qui est lu par gnome-terminal et qui est le "fichier .bashrc à l'échelle du système pour les shells interactifs bash (1)".

Mon appel à la fonction rvm, [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" , est entré et fonctionne parfaitement pour le couple d’utilisateurs de ce système.

    
réponse donnée Dmitri 13.02.2012 - 03:38
la source
4

L'installation de RVM en tant qu'utilisateur multiple nécessite que l'utilisateur exécute cette commande:

(car Ubuntu ne source pas /etc/profile.d à la connexion)

echo '[[ -s "/etc/profile.d/rvm.sh" ]] && . "/etc/profile.d/rvm.sh" # Load RVM function' >> ~/.bashrc
    
réponse donnée user50486 13.03.2012 - 21:07
la source
0

si vous avez ZSH ou OH-MY-ZSH, votre profil est / etc / zprofile

    
réponse donnée Hadi Farnoud 25.10.2013 - 11:52
la source
0

J'ai effectivement trouvé pour ceux qui ne veulent pas redémarrer complètement leurs boîtiers à moins que cela ne soit absolument nécessaire de suivre les instructions suivantes:

Vous n'avez pas besoin de redémarrer la machine entière pour que les modifications apportées à /etc/profile prennent effet. Tout ce dont vous avez besoin est de redémarrer votre interface graphique XWindows Desktop pour qu'elle relise les configs (comme si elle devait être démarrée dans le cadre d'un redémarrage à l'échelle du système).

Pour moi, j'utilise xUbuntu qui utilise LightDM, mais vous pouvez le sous-exécuter dans n'importe quel exécutable qui appelle votre bureau actuel.

Tout d’abord, vous ne pouvez pas utiliser un émulateur de terminal à l’intérieur de l’interface graphique du bureau pour le faire (du moins pas avec LightDM), vous devez utiliser SSH ou une console secondaire (si vous maintenez Ctrl + Alt enfoncée). ou une touche numérique vous devez laisser tomber votre connexion ou écran de bureau graphique à une fenêtre de terminal ordinaire). Je vous suggère également de fermer tout bureau distant tel que VNC si vous utilisez SSH (il est évident que SSH peut être connecté, vous ne voulez simplement pas qu'une fenêtre VNC ouverte soit interrogée à l’affichage 0 alors qu’il essaie de redémarrer car cela peut bloquer le redémarrage alors que il attend que vous terminiez la session VNC).

Je le fais tout le temps avec SSH et c'est une grande bouée de sauvetage, surtout lorsque vous n'êtes pas physiquement sur votre machine et que vous n'avez pas envie d'attendre un redémarrage complet et de vous reconnecter :-D

Maintenant, la partie facile une fois dans un terminal "secondaire" ou un problème SSH: (Oui, cela va tuer votre session en cours, assurez-vous que cela ne vous dérange pas, enregistrez les documents ouverts ou travaillez)

sudo service lightdm restart

Attendez une minute car cela tue le bureau, puis le redémarre (cela peut prendre quelques bonnes secondes lorsque les choses sont arrêtées puis ré-exécutées au démarrage)

Ça y est, maintenant que vous revenez à la console 0 ou que vous utilisez VNC pour vous connecter à nouveau, vous serez accueilli par l'invite de connexion et vous vous connecterez normalement. Si vous ouvrez un émulateur de terminal et que vous lancez votre commande vous ne devriez plus avoir de problèmes car tout a été recréé comme si vous aviez redémarré complètement votre machine.

Rappelez-vous simplement que si vous émettez sudo service lightdm restart [ou stop , start , peu importe] depuis l'environnement du bureau à l'aide d'un émulateur de terminal, la commande sera simplement suspendue et rien ne semblera se produire. Cela est dû au fait que vous utilisez actuellement cette console (aka display) 0 et qu’elle ne peut pas s’éteindre complètement et revenir en arrière car elle attend que le bureau ne soit pas utilisé avant d’exécuter la commande.

Dernière note: Je n'ai pas essayé de relancer l'environnement depuis le bureau dans un émulateur de terminal, puis de basculer sur une autre console qui peut ensuite le redémarrer, mais si vous allez déjà changer de console, alors pourquoi pas exécutez la commande à partir de là comme il se doit de toute façon?

    
réponse donnée Pariah 05.11.2014 - 16:19
la source
-3

echo ". .profile" & gt; & gt; ~ / .bashrc

Puis ouvrez une autre fenêtre. Je pense que c'est l'approche facile.

    
réponse donnée chris 16.11.2014 - 07:28
la source

Lire d'autres questions sur les étiquettes