Mac Gnu-Screen ne charge pas .bash_profile par défaut

14

J'ai un tas de paramètres personnalisés dans mon bash_profile. quand j'utilise gnu-screen, j'ai réalisé que mes écrans ne s'exécutent pas source /Users/disappearedng/.bash_profile. J'essaye de mettre la source /Users/disappearedng/.bash_profile dans mon fichier .screenrc mais ensuite il se plaint que l'alias n'est pas une commande ... (Je suppose que screenrc a besoin d'une commande spécifique screenrc).

J'ai essayé de changer mon .bash_profile en .profile ou .bash_rc. Aucun de ces travaux.

De l'aide?

disparu
la source

Réponses:

17

Le fichier .bash_profile (et le fichier .profile également) est chargé pour les shells de connexion, les shells sans connexion utilisent .bashrc (pas de symbole _). Il y a une ligne dans le fichier .screenrc qui indique à l'écran le shell à générer lors du démarrage d'une fenêtre d'écran (lorsque vous ne lancez pas un programme spécifique en tant qu'application de fenêtre). Dans mon fichier .screenrc, c'est en tant que tel (y compris les commentaires):

# shell:  Default process started in screen's windows.
# Makes it possible to use a different shell inside screen
# than is set as the default login shell.
# If begins with a '-' character, the shell will be started as a login shell.
  shell -$SHELL

Vérifiez votre fichier .screenrc et vérifiez que la ligne du shell a le tiret devant. En ayant ce symbole de tiret et en forçant un shell de connexion, vous obtiendrez votre fichier .bash_profile. La variable $ SHELL dans mon .screenrc utilise la valeur du shell fournie par le shell qui lance l'écran (généralement pour moi c'est bash).

Au cas où vous vous poseriez la question, la plus grande différence que j'ai pu découvrir entre les shells de connexion et les shells sans connexion est qu'un shell sans connexion est normalement ce qui est invoqué pour exécuter des scripts.

Matrix Mole
la source
Ah merci! De plus, existe-t-il un moyen de me faire savoir facilement que cette fenêtre actuelle est à l'intérieur de l'écran GNU?
disparu le
l'option hardstatus dans le fichier .screenrc peut être utilisée pour vous assurer que vous pouvez identifier que vous êtes à l'écran (ainsi que d'autres paramètres astucieux que je comprends). La page de manuel de l'écran devrait avoir les détails sur la façon de le configurer (je ne connais pas ceux du haut de ma tête).
Matrix Mole
2

L'approvisionnement .bash_profileest en fait quelque chose de différent que l'application de terminal Mac que la plupart des applications de terminal ne font pas. L'écran est ~/.bashrccependant lu à chaque fois que vous générez un nouveau shell.

Si vous renommez votre ~/.bash_profileto ~/.bashrc(sans soulignement entre bash et rc, comme dans votre question), il sera sourcé.

Cependant, ma stratégie préférée est de mettre tous mes paramètres dans le bashrc, puis de les source bash_profilecomme ceci:

[ -f .bashrc ] && . .bashrc
Freedom_Ben
la source
-1

Vous n'avez pas besoin de modifier un fichier de configuration, si vous écrivez tous vos paramètres .bash_profile, comme vous le faites normalement pour configurer votre terminal, et créez un lien nommé .bashrcpointant vers votre .bash_profilepour les sessions d'écran via:

$ ln -s ~/.bash_profile ~/.bashrc

Toutes les modifications apportées à l'un des fichiers sont stockées dans .bash_profilemais également accessibles par .bashrc.

Le seul inconvénient est que vous ne pouvez pas ajouter de paramètres à un seul des fichiers de configuration.

tarkness
la source
Pouvez-vous développer un peu cette réponse? Vous n'avez pas vraiment expliqué comment cela résoudrait le problème.
bwDraco
-1

Les identifiants de connexion Linux source ceux qui ne se connectent pas en ajoutant la ligne suivante en cas de fichiers utilisateur:

[[ -f ~/.bashrc ]] && . ~/.bashrc
FreeFog
la source
Cette solution a déjà été publiée.
slhck
En outre, il semble être à l'envers.
G-Man dit `` Réintègre Monica ''