Pour 11.04, j'ai fait une nouvelle installation de mon système. Une partie de cette installation a été d'installer RVM , qui colle un rvm.sh
dans /etc/profile.d/
. Cela ne fonctionne pas car /etc/profile
(qui charge chaque + r /etc/profile.d/*.sh
) n'est pas en cours de chargement. Selon la documentation, le profil n'est créé que si bash est exécuté en 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 configuration. C'est-à-dire qu'une nouvelle installation de 10.10 générera correctement le profil source / .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 faites dans Natty qui ont cassé cela? Ma solution actuelle est source /etc/profile
dans ~/.bashrc
( ce qui est terrible que le profil est destiné à la charge avant de bashrc, mais le tour est joué).
/etc/profile
(et donc celle du fichier .d). Merci pour l'explication - il semble que cela nécessite un suivi auprès des gens de RVM./etc/profile
et~/.profile
pendant la connexion. C'est étrange car cela a toujours fonctionné avec les anciennes versions. Je pense que ce n'est pas une solution mais une solution de contournement.Cependant, il existe un fichier
/etc/bash.bashrc
lu par gnome-terminal et constituant 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 passé par là et fonctionne parfaitement pour les quelques utilisateurs de ce système.la source
/etc/bash.bashrc
. Eh bien, au moins sur Debian / Ubuntu. Bash normalement ne lit pas un bashrc à l’échelle du système; Debian l'a corrigé pour le faire.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 lors de la connexion)
la source
/etc/profile.d/
lors de la connexion, car les/etc/profile
boucles par défaut les parcourent, ainsi que les fichiers/etc/profile.d/
. Cependant, si celarvm.sh
contient du code pour les shells interactifs, tels que des fonctions ou des alias, il/etc/profile
est inutile de les rechercher. La configuration pour les sessions interactives doit être dans.bashrc
.si vous avez ZSH ou OH-MY-ZSH, votre profil est / etc / zprofile
la source
J'ai effectivement trouvé pour ceux qui n'aiment pas redémarrer complètement leurs boites à moins que ce ne soit absolument nécessaire ce qui suit ...
Vous n'avez pas besoin de redémarrer la machine entière pour que les modifications
/etc/profile
prennent effet. Tout ce dont vous avez besoin est de faire redémarrer votre interface graphique XWindows Desktop pour qu'il relise les configurations (comme s'il le faisait s'il devait être démarré dans le cadre d'un redémarrage à l'échelle du système).Pour moi, j'utilise xUbuntu, qui utilise LightDM, mais vous pouvez utiliser n'importe quel exécutable qui appelle votre bureau actuel.
Premièrement, vous ne pouvez pas utiliser un émulateur de terminal à partir de l'interface graphique du bureau lui-même (du moins pas avec LightDM), vous devez utiliser SSH ou une console secondaire (si vous maintenez les touches Ctrl + Alt enfoncées et que vous appuyez sur une touche F ou numérique vous devez abandonner votre connexion graphique au bureau ou passer d’un écran à une fenêtre de terminal ordinaire). Je vous suggère également de fermer tout élément de bureau distant tel que VNC si vous utilisez SSH (vous pouvez évidemment vous connecter à SSH, vous ne voulez pas qu'une fenêtre ouverte de VNC interroge l'affichage 0 alors qu'il tente de redémarrer car cela pourrait suspendre le redémarrage il attend que vous terminiez la session VNC).
Je fais cela tout le temps avec SSH et c'est une grande bouée de sauvetage, en particulier lorsque vous n'êtes pas physiquement à côté de 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 problème "secondaire" de terminal ou SSH: (Oui, cela va tuer votre session en cours, assurez-vous de ne pas vous déranger, sauvegardez tous les documents ouverts ou travaillez)
attendez une minute car il tue le bureau, puis le redémarre (cela peut prendre quelques bonnes secondes car les choses sont arrêtées puis réexécutées au démarrage)
Ça y est, maintenant, lorsque vous revenez à la console 0 ou que vous allez utiliser VNC pour vous connecter à nouveau, vous serez accueillis par l'invite de connexion. Une connexion normale s'ouvrira. Si vous ouvrez un émulateur de terminal et que vous passez votre commande, vous devriez maintenant n'ayez aucun problème, car tout a été re-sourcé comme si vous redémarriez complètement votre machine.
Rappelez-vous simplement que si vous lancez
sudo service lightdm restart
[oustop
,start
quel que soit] à partir de l'environnement de bureau lui-même à l'aide d'un émulateur de terminal, la commande sera suspendue et rien ne semblera se passer. Cela est dû au fait que vous utilisez actuellement cette console (affichage) 0 et qu’elle ne peut donc pas complètement disparaître et revenir car elle attend que le poste de travail ne soit pas utilisé avant d’exécuter la commande.Dernière remarque: je n'ai pas essayé d'émettre de redémarrage sur l'environnement à partir du bureau dans un émulateur de terminal, puis de basculer vers une autre console susceptible de le redémarrer, mais si vous allez déjà changer de console, pourquoi ne pas simplement exécuter la commande de là comme il se doit de toute façon?
la source
echo ".profile" >> ~ / .bashrc
Et puis ouvrez une autre fenêtre. Je pense que c'est l'approche facile.
la source
.profile
sources par défaut.bashrc
, cela entraînerait une boucle pour la plupart des utilisateurs.