J'utilise l'écran quotidiennement pour les besoins de mon terminal et j'en suis très satisfait. Récemment, cependant, je fait quelques mises à jour de mes fichiers de configuration de bash et j'ai remarqué que je mettais divers PATH
éléments ( PATH
, MANPATH
, INFOPATH
, etc.) en 2 endroits. J'ai modifié les fichiers pour qu'ils soient ce qu'ils devraient être et maintenant toutes mes variables d'environnement sont définies une fois .bash_profile
. C'est là que réside mon problème.
Apparemment, la raison pour laquelle je les installais à deux endroits était à cause de l'écran. écran apparaît seulement exécuter .bashrc
et ne pas semble hériter mes PATH
ou tout autre variables d' environnement correctement de mon shell bash d' origine. Parce qu'il s'exécute uniquement .bashrc
et que je ne place maintenant que mes variables .bash_profile
, j'obtiens un fichier incomplet PATH
.
Ma question est alors de savoir comment obtenir mes variables d'environnement à l'écran sans la duplication. La lecture des Bash
documents semble indiquer que ce pourrait être le type de shell que l'écran utilise pour se connecter, c'est-à-dire un shell interactif sans connexion, mais je ne pouvais pas comprendre comment forcer l'écran à utiliser un type de shell particulier, seul le shell à utiliser via -s /bin/bash
.
Vous pouvez parcourir mes fichiers de configuration sur ma page GitHub . C'est le commit commit qui a cassé l'écran .
EDIT: J'utilise Screen version 4.00.03 (FAU) 23-Oct-06
et j'ai tendance à l'invoquer enscreen -h 50000
EDIT: J'ai maintenant pu tester cela sur Cygwin ( CYGWIN_NT-5.1 1.7.1(0.218/5/3) i686
, Screen version 4.00.03 (FAU) 23-Oct-06
) et il présente un comportement différent de celui de mon Mac.
Le comportement spécifique que j'ai découvert est que, dans Cygwin, les modifications que PATH
j'apporte dans .bash_profile sont dupliquées lors de l'entrée dans l'écran, puis la création successive de fenêtres d'écran ne duplique pas le chemin, mais re-source .bash_profile.
Pour illustrer le comportement dont je parle:
Sortie d'un nouveau terminal:
...
PATH: /home/tvishe01/bin/emacs/bin:/home/tvishe01/bin:/usr/local/bin:/usr/bin:/bin:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/Program Files/ATI Technologies/ATI.ACE/Core-Static:/groovy-1.6.1/bin:/usr/lib/lapack
MANPATH: /home/tvishe01/share/man:/usr/local/man:/usr/share/man:/usr/man::/usr/ssl/man
Aliases:
alias ..='cd ..'
alias ...='cd ../..'
...
[~]$
Sortie de la première invocation d'écran:
[~]$ screen -h 50000 -s -/bin/bash
...
PATH: /home/tvishe01/bin/emacs/bin:/home/tvishe01/bin:/usr/local/bin:/usr/bin:/bin:/home/tvishe01/bin/emacs/bin:/home/tvishe01/bin:/usr/local/bin:/usr/bin:/bin:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/Program Files/ATI Technologies/ATI.ACE/Core-Static:/groovy-1.6.1/bin:/usr/lib/lapack
MANPATH: /home/tvishe01/share/man:/usr/local/man:/usr/share/man:/usr/man:/home/tvishe01/share/man:/usr/local/man:/usr/share/man:/usr/man::/usr/ssl/man:/usr/ssl/man
Aliases:
alias ..='cd ..'
alias ...='cd ../..'
...
[~]$
Appels ultérieurs à C-a c
:
...
PATH: /home/tvishe01/bin/emacs/bin:/home/tvishe01/bin:/usr/local/bin:/usr/bin:/bin:/home/tvishe01/bin/emacs/bin:/home/tvishe01/bin:/usr/local/bin:/usr/bin:/bin:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/Program Files/ATI Technologies/ATI.ACE/Core-Static:/groovy-1.6.1/bin:/usr/lib/lapack
MANPATH: /home/tvishe01/share/man:/usr/local/man:/usr/share/man:/usr/man:/home/tvishe01/share/man:/usr/local/man:/usr/share/man:/usr/man::/usr/ssl/man:/usr/ssl/man
Aliases:
alias ..='cd ..'
alias ...='cd ../..'
...
[~]$
Tu peux voir