J'utilise Linux Mint. Mon shell de connexion ( cat /etc/passwd | grep myUserName
) est bash.
Après avoir démarré mon environnement de bureau graphique et exécuté un émulateur de terminal à partir de celui-ci, je constate que la .bash_profile
source n’est pas source (les vars d’environnement qui y export
sont édités ne sont pas définis). Mais si je me connecte à partir d'une console de texte ( ctrl+ alt+ F1) ou que je lance manuellement à bash -l
partir de l'émulateur de terminal, cela .bash_profile
fonctionne correctement.
Est-ce que je me trompe quand je pense que cela .bash_profile
devrait provenir du démarrage de X et que tous export
les vars modifiés devraient être disponibles dans le terminal, à partir de X?
Post-scriptum Tout placer dans .bashrc
et source à partir de .bash_profile
n'est pas une bonne idée ( https://stackoverflow.com/questions/902946/ ): les éléments d'environnement ne doivent être importés qu'une seule fois.
.bash_profile
est le script de configuration de démarrage de bash. Il n'existe pas de norme obligeant X à la source.bash_profile
.Ce à quoi vous pensez, c'est plutôt
.profile
. À l'origine, il s'agissait du fichier de configuration de démarrage du bourne shell (sh). Aujourd'hui, de nombreuses distributions ont leur environnement de bureau configuré en source.profile
. Notez que ce n’est pas non plus une norme, mais cela semble être une convention.Auparavant, Debian utilisait une source
.profile
de connexion graphique ( page wiki de 2013 ), mais pas maintenant ( page wiki de 2016 ).Arch sources
.xprofile
lors de la connexion graphique ( page wiki à partir de 2013 ).Ubuntu déconseillait d’utiliser
.profile
( page wiki à partir de 2013 ) maintenant, il ne décourage plus ( page wiki à partir de 2016 ).Concernant votre autre question: Pourquoi mon ~ / .bash_profile ne fonctionne-t-il pas? C'est le comportement attendu.
Le comportement, en bref, est le suivant:
~/.profile
~/.bashrc
Pour plus de détails, voir ma réponse à une question similaire dans askubuntu: https://askubuntu.com/questions/132276/configure-gnome-terminal-to-start-bash-as-a-login-shell-doesnt-read-bashrc / 132319 # 132319
la source
~/.bashrc
» est un mauvais conseil: vous ne devriez lire que.bashrc
depuis un shell interactif . Vous avez oublié le problème fondamental qui est que lors de la connexion sous X, il n’existe pas d’instance de connexion de bash (dans la plupart des combinaisons d’environnement de gestionnaire d’affichage et de bureau, y compris évidemment AntonioK)..bashrc
", je voulais toujours parler d'un shell interactif. J'ai clarifié cette partie. J'espère que ce n'est plus trompeur..profile
( lien ) " Le wiki décourageait une fois (absurdement) cela; ça a été corrigé. (Note/etc/profile
ne reste découragé pour des missions échelle du système, de préférence pour l' ajout de scripts/etc/profile.d
.) Par utilisateur les.profile
fichiers sont maintenant présentés comme l' une des méthodes recommandées pour fixer l' environnement par l' utilisateur des variables: « les fichiers appropriés pour les paramètres variables de l' environnement qui devrait affecter seulement Les utilisateurs particuliers (plutôt que le système dans son ensemble) sont ~ / .pam_environment et ~ / .profile . "~/.profile
pour la connexion graphique et~/.xsessionrc
doit être utilisée à la place.Dans votre question, vous vous référez à https://stackoverflow.com/questions/902946/ comme recommandant de ne pas utiliser une source, lorsque la réponse acceptée indique:
Tout mettre en place
.profile
ne fonctionnait pas pour moi sous Linux Mint. L'utilisation.bashrc
a bien fonctionné.la source
Quelques problèmes se posent lorsque vous essayez de recharger / source le fichier ~ / .profile. [Cela concerne Ubuntu linux - dans certains cas, les détails des commandes seront différents]
Un d. 1)
L'exécuter directement dans le terminal signifie qu'aucun sous-shell ne sera créé. Vous pouvez donc utiliser l'une des deux commandes suivantes:
ou
Dans les deux cas, l'environnement sera mis à jour avec le contenu du fichier .profile.
Ad 2) Vous pouvez lancer n’importe quel script bash en appelant
ou
Dans le premier cas, cela créera un sous-shell qui n’affectera pas les variables d’environnement de votre système et celles-ci ne seront visibles que par le processus du sous-shell. Une fois la commande de sous-shell terminée, aucune des exportations, etc. ne sera appliquée. CECI EST UNE ERREUR COMMUNE ET PERMET À BEAUCOUP DE DÉVELOPPEURS DE PERDRE BEAUCOUP DE TEMPS.
Pour que vos modifications appliquées dans votre script aient un effet sur l'environnement global, vous devez exécuter le script avec
commander.
Afin de vous assurer que votre script n'est pas exécuté dans un sous-marin, vous pouvez utiliser cette fonction. (Encore une fois, l'exemple concerne le shell Ubuntu)
J'espère que cela efface certains des malentendus communs! : D bonne chance!
la source
La solution simple consiste à faire du terminal un terminal de connexion. Pour le terminal Gnome sous "Tile and Command" du profil par défaut, vous pouvez cocher la case "Exécuter la commande en tant que shell de connexion". Cet article explique la différence entre un shell de connexion et un autre.
la source