web-dev-qa-db-fra.com

Qu'est-ce que le fichier .bashrc?

Unix shells au démarrage, lit le fichier .bashrc et exécute les commandes qui y sont écrites. Qu'est-ce que ce fichier et qu'est-ce qu'il exécute?

97
pineapple

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

La page de manuel de bash } _ (de Brian Fox et Chet Ramey; également page d'information "Bash Startup Files" ) est la référence faisant autorité:

Lorsqu'un shell interactif qui n'est pas un shell de connexion est démarré, bash lit et exécute les commandes à partir de ~/.bashrc, si ce fichier existe. Cela peut être inhibé en utilisant l'option --norc. L'option de fichier --rcfile obligera bash à lire et à exécuter des commandes à partir du fichier au lieu de ~/.bashrc.

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

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

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

Le fichier est juste 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 souhaitant insérer bashismes dans leurs fichiers de démarrage.

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

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

. .profile

C’est l’une des raisons pour lesquelles tout cela est si complexe, c’est que parfois, les utilisateurs insèrent des éléments générant des sorties dans des fichiers de démarrage de Shell ou définissent des invites de manière inconditionnelle. Cela pose beaucoup de problèmes lors de l'exécution de programmes Shell et de commandes backtick dans des langues, sans parler de system(3) à partir de programmes C. La manière dont bash démarre est conçue, je pense, pour avoir un fichier où les paramètres de sortie et d’invite sont corrects et un fichier où il ne l’est pas. En règle générale, un test d'exécution est effectué pour distinguer l'interactivité, par exemple en vérifiant si l'invite est définie.

64
DigitalRoss

Lorsque Bash démarre, il exécute les commandes dans divers scripts.

Lorsque Bash est appelé en tant que shell de connexion interactif, 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, puis lit et exécute les commandes à partir de la première qui existe et est lisible.

Lorsqu'un shell de connexion se ferme, 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 démarré, Bash lit et exécute les commandes de ~/.bashrc, si ce fichier existe. Cela peut être inhibé en utilisant l'option --norc. L'option de fichier --rcfile 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 astuces et conseils:

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

Essayons de définir l’invite afin qu’elle puisse afficher la date du jour et le nom d’hôte:

PS1="\d \h $ "
12
randomx

Il doit contenir diverses commandes d’initialisation pour votre Shell, par exemple:

  • Créer des alias utiles (par exemple alias ll='ls -l').
  • Ajouter plus de répertoires à PATH.
  • Définition de nouvelles variables d'environnement.
10
Roman Zeyde