web-dev-qa-db-fra.com

Qu'est-ce qu'un fichier .bashrc et que fait-il?

Je n'arrive pas à trouver une information claire sur ce qu'est le fichier .bashrc et sur ce qu'il fait exactement.


Merci pour toute l'aide jusqu'ici. Il semble que ce script fasse tout, de la coloration à la finition, en passant par les alias, l’histoire de Shell, etc. Y at-il quelque chose qui ne semble pas utile?

19
Justin

Le fichier .bashrc est un script qui est exécuté chaque fois qu'une nouvelle session de terminal est démarrée en mode interactif . C’est ce qui se produit lorsque vous ouvrez une nouvelle fenêtre de terminal en appuyant sur Ctrl+Alt+Tou ouvrez simplement un nouvel onglet de terminal.

En revanche, une session de terminal en mode de connexion vous demandera un nom d'utilisateur et un mot de passe et exécutera le script ~/.bash_profile. C'est ce qui se produit, par exemple, lorsque vous vous connectez à un système distant via SSH.

Le fichier .bashrc contient lui-même une série de configurations pour la session de terminal. Cela inclut la configuration ou l'activation: coloration, achèvement, historique du shell, alias de commande, etc. Le fichier .bashrc distribué avec Ubuntu est bien commenté et vous pourrez comprendre la plupart de ses fonctions en le lisant simplement.

Vous pouvez modifier .bashrc à votre guise. Ici vous pouvez obtenir un exemple avec de nombreuses fonctionnalités supplémentaires.

19
Luís de Sousa

Question sur superutilisateur - Qu'est-ce que le fichier .bashrc? par @pineapple et répondu par @DigitalRoss

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

Le page de manuel bash (par Brian Fox et Chet Ramey; aussi 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 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 les 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, étend 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 qui souhaitent placer bashisms dans des fichiers de démarrage.

" Pas un shell de connexion " signifie des choses comme le lancement de scripts et généralement des fenêtres de terminaux lancées par des gestionnaires de fenêtres. Parfois, je configure des systèmes * nix pour que .bashrc et BASH_ENV soient juste 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 de nombreux problèmes lors de l'exécution de programmes Shell et de commandes backtick dans les langues, sans parler de system(3) à partir de programmes C. La façon dont bash démarre est conçu, 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.

5
αғsнιη