116 votes

Qu'est-ce que le fichier .bashrc ?

Les shells Unix, au démarrage, lisent le .bashrc et exécuter les commandes qui y sont écrites. Quel est ce fichier et qu'exécute-t-il ?

75voto

DigitalRoss Points 3088

En fait, c'est bash spécifiquement qui se lit .bashrc (et /etc/bash.bashrc ). Il y a beaucoup de coquillages différents.

El page de manuel de bash (par Brian Fox et Chet Ramey ; aussi Page d'information "Fichiers de démarrage de Bash". ) est la référence qui fait autorité :

Lorsqu'une Shell interactive qui n'est pas une Shell de connexion est lancée, bash lit et exécute les commandes de ~/.bashrc , si ce fichier existe. Ceci peut être empêché par l'utilisation de l'option --norc option. Le site --rcfile forcera l'option de fichier bash à lire et exécuter les commandes à partir du fichier au lieu de ~/.bashrc .

Quand bash est lancé de manière non interactive, pour exécuter un Shell Shell, par exemple, il recherche l'option variable BASH_ENV dans l'environnement, développe sa valeur si elle y apparaît, et utilise la valeur développée comme nom d'un fichier à lire et à exécuter. Bash se comporte comme si la commande suivante suivante était exécutée :

if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi  

mais la valeur de la PATH n'est pas utilisée pour rechercher pour rechercher le nom du fichier.

Ce fichier ne contient que des commandes Shell. Il est généralement utilisé pour modifier les invites, définir les variables d'environnement et définir les procédures Shell. Traditionnellement, le fichier .profile est utilisé à cette fin, mais bash a tellement d'extensions qu'il a besoin de son propre fichier de démarrage pour les utilisateurs qui veulent mettre bashismes dans les fichiers de démarrage.

" Pas un login Shell " signifie des choses comme le lancement de script et généralement des fenêtres de terminal lancées par des gestionnaires de fenêtres. Parfois, je configure les systèmes *nix pour avoir .bashrc y BASH_ENV juste la source .profile . Tant que vous ne vous écartez pas des commandes POSIX Shell, vous obtiendrez la même initialisation dans n'importe quel Shell.

C'est particulièrement utile lorsque sh est vraiment bash ce qui arrive parfois. Pour ce faire, utilisez :

. .profile

Une des raisons pour lesquelles tout ceci est si complexe est que parfois les gens mettent des choses qui produisent des sorties dans les fichiers de démarrage de Shell, ou ils mettent inconditionnellement des invites. Cela cause beaucoup de problèmes lors de l'exécution de programmes Shell et de commandes backtick dans les langages, sans parler de system(3) à partir de programmes C. La manière bash Le démarrage est conçu, je pense, pour avoir un fichier où les paramètres de sortie et d'invite sont corrects et un fichier où ils ne le sont pas. Traditionnellement, un test d'exécution serait effectué pour distinguer l'interactivité, par exemple en vérifiant si l'invite est activée.

14voto

sickill Points 389

Lorsque Bash démarre, il exécute les commandes dans une variété de différents scripts.

Lorsque Bash est invoqué en tant que login interactif Shell, il lit et exécute d'abord les commandes du fichier /etc/profile, si ce fichier existe. Après avoir lu ce fichier, il recherche ~/.bash_profile, ~/.bash_login et ~/.profile, dans cet ordre, et lit et exécute les commandes du premier qui existe et qui est lisible.

Lorsqu'un login Shell sort, Bash lit et exécute les commandes du fichier ~/.bash_logout, s'il existe.

Lorsqu'un Shell interactif qui n'est pas un Shell de connexion est lancé, Bash lit et exécute les commandes de ~/.bashrc, si ce fichier existe. Ceci peut être inhibé en utilisant l'option --norc. L'option --rcfile file forcera Bash à lire et à exécuter les commandes à partir du fichier au lieu de ~/.bashrc.

http://en.wikipedia.org/wiki/Bash_(Unix_shell)

Voici quelques trucs et astuces :

http://www.cyberciti.biz/tips/howto-linux-unix-bash-Shell-setup-prompt.html

Essayons de configurer l'invite pour qu'elle puisse afficher la date du jour et le nom d'hôte :

PS1="\d \h $ "

11voto

Milad Points 1

Il devrait contenir diverses commandes d'"initialisation" pour votre Shell, par exemple :

  • Créer des alias utiles (par exemple alias ll='ls -l' ).
  • Ajout de répertoires supplémentaires à PATH.
  • Définition de nouvelles variables d'environnement.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X