J'ai installé texlive et je souhaite l'ajouter en tant que variable d'environnement à mon chemin afin qu'Emacs AucTeX puisse le lire lorsque je lance emacs à partir de l'interface graphique ou de la ligne de commande. Jusqu'à présent, j'ai lu qu'Emacs ne lit que les fichiers de ~/.profile
.
Par conséquent, mon plan est d’ajouter texlive à mon chemin dans .profile
pour permettre à l’interface graphique d’emacs de le lire, puis de source ~/profile
à partir de .bashrc
afin de lancer emacs à l’intérieur de mon interaction non-login. Terminal GNOME pour voir le chemin.
Remarque: je n'ai pas de fichier .profile
dans mon répertoire personnel, mais uniquement dans mon répertoire /etc
, et je préférerais ne pas le toucher, mais j'ai un .bash_profile
dans mon répertoire personnel. annuaire. Cependant, j'ai lu que .bash_profile
n'est exécuté que pour une session de connexion interactive, également appelée mode console, que je n'utilise pas.
.profile
dans mon répertoire personnel et de procéder comme suit:étape 1: Créer ~/.profile
Étape 2: Ajouter la variable d’environnement texlive au chemin dans .profile
export PATH=/usr/local/texlive/2018/bin/x86_64-linux:$PATH
export MANPATH=/usr/local/texlive/2018/texmf-dist/doc/man:$MANPATH
export INFOPATH=/usr/local/texlive/2018/texmf-dist/doc/info:$INFOPATH
Étape 3: Source .profile
à partir de .bashrc
#Adding this at the bottom or start of .bashrc to source .profile when the terminal is opened.
if [-s ~/.profile]; then;
source ~/.profile;
fi
Je sais qu'il y a beaucoup d'appréhension à l'égard de la recherche de sources .profile
de .bashrc
en raison du risque de provoquer une boucle infinte. Cependant, étant donné que je crée un fichier .profile
à partir de zéro, cela ne posera pas de problème car il ne contiendra aucun code faisant référence à .bashrc
.
Informations supplémentaires: Mon .bashrc
ne contient que du code source ~/etc/bashrc
et une variable d'environnement ajoutée automatiquement par Anaconda: export PATH="/home/Fedora_User/Anaconda3/bin:$PATH"
N'oubliez pas que je sais que gnome-terminal peut être utilisé en tant que shell de connexion interactif, mais je ne l'ai jamais fait et je ne sais pas si cela affectera les performances de mes sessions de terminal.
Tout d'abord, notez que si vous voulez que ~/.profile
soit lu, vous devrez supprimer ~/.bash_profile
, sinon ~/.profile
sera ignoré par Bash.
En fait, vous compliquez un peu la tâche. PATH est défini dans /etc/environment
. Il est toujours déjà export
ed, il n’a donc pas besoin d’être exporté à nouveau.
Si vous apportez des modifications à votre PATH dans ~/.profile
, chaque shell en héritera, qu'il s'agisse d'un shell de connexion, interactif ou autre.
D'autres variables exportées dans ~/.profile
seront également transmises à l'environnement et seront disponibles dans chaque shell. ~/.profile
est lu une fois lorsque vous vous connectez à votre session et les variables exportées restent exportées.
Sourcing ~/.profile
dans ~/.bashrc
est une mauvaise idée. ~/.profile
sources ~/.bashrc
donc vous obtiendrez une boucle infinie. Même si ~/.profile
ne source pas ~/.bashrc
c'est une mauvaise idée d'avoir ~/.bashrc
source ~/.profile
ou tout autre fichier avec des affectations telles que
PATH=$PATH:/some/other/place
parce que chaque fois qu'un shell interactif démarre un autre shell interactif, PATH sera étendu ... vous obtiendrez votre PATH
/original/path:/some/other/place:/some/other/place:/some/other/place
etc.
Votre affectation MANPATH n'a pas besoin d'inclure $MANPATH
mais elle doit commencer par un signe deux-points. S'il vous plaît voir cette question et sa réponse . Par défaut, MANPATH n'est pas défini et le chemin correct est déterminé dynamiquement (d'une certaine manière, je ne le comprends pas), donc inclure MANPATH existant ne fait rien. Vous devrez peut-être commencer l'affectation MANPATH avec un signe deux-points pour éviter que le chemin ne soit déterminé de manière dynamique. Autant que je sache, il en va de même pour INFOPATH
Par conséquent, je suggère:
Renommer ~/.bash_profile
~/.profile
Ajouter les lignes:
PATH="$PATH:/usr/local/texlive/2018/bin/x86_64-linux"
export MANPATH=":/usr/local/texlive/2018/texmf-dist/doc/man"
export INFOPATH=":/usr/local/texlive/2018/texmf-dist/doc/info"
Notes que j'ai ajoutées à PATH plutôt que de les ajouter au début. Vous pouvez ajouter du préfixe (mettez $PATH
à la fin au lieu du début) si vous le souhaitez. Le premier exécutable trouvé dans la recherche de chemin est exécuté. Ainsi, si deux programmes situés dans des emplacements PATH différents portent le même nom, celui du répertoire qui arrive en premier (plus à gauche) dans PATH sera exécuté.
N'ajoutez rien à votre ~/.bashrc
. Les variables d'environnement modifiées ou les nouvelles variables exportées dans ~/.profile
seront disponibles pour tous les Shell et il n'est pas nécessaire de les définir ailleurs.
Notez également que vous ne devez pas source /etc/bash.bashrc
dans ~/.bashrc
, car /etc/bash.bashrc
est déjà généré par chaque shell interactif en premier * et nous utilisons ~/.bashrc
pour apporter les modifications suivantes.
* Une exception - /etc/bash/bashrc
vérifie que le shell est interactif à l'aide d'une méthode non fiable. Il vérifie que PS1 est défini. Si vous démarrez un shell en désactivant PS1, /etc/bash.bashrc
ne sera pas créé, même si le shell est interactif. Une autre exception concerne le démarrage du shell avec --norc
, mais c'est plus évident.