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

21

Je n'arrive pas à trouver d'informations claires sur ce qu'est le .bashrcfichier et ce qu'il fait exactement.


Merci pour toute l'aide jusqu'ici. Il semble que ce script fasse tout, depuis la coloration, l'achèvement, les alias et l'historique du shell, etc. Y a-t-il quelque chose qui ne semble pas utile?

Justin
la source
4
.bashrcest l'un des nombreux fichiers de configuration bash. Voir la documentation officielle sur les fichiers de démarrage Bash .
muru

Réponses:

21

Le .bashrcfichier est un script qui est exécuté chaque fois qu'une nouvelle session de terminal est lancée en mode interactif . C'est ce qui se produit lorsque vous ouvrez une nouvelle fenêtre de terminal en appuyant sur Ctrl+ Alt+ T, ou ouvrez simplement un nouvel onglet de terminal.

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

Le .bashrcfichier lui-même contient une série de configurations pour la session de terminal. Cela inclut la configuration ou l'activation: la coloration, l'achèvement, l'historique du shell, les alias de commande et plus encore. Le .bashrcfichier distribué avec Ubuntu est bien commenté et vous pourrez comprendre l'essentiel de ce qu'il fait juste en le lisant.

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

Luís de Sousa
la source
Le lien est rompu.
rab
1
Le lien fonctionne.
Luís de Sousa
Dans cette page, le fichier de téléchargement ne fonctionne pas.
rab
1
Le lien et le téléchargement fonctionnent bien
M. Becerra
5

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

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

La page de manuel bash (par Brian Fox et Chet Ramey; également la page d'informations "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' --norcoption. L' --rcfileoption file obligera bash à lire et à exécuter des commandes à partir de file 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_ENVdans 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 était exécutée:

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

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

Le fichier n'est 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 .profileest utilisé à cette fin, mais basha tellement d'extensions qu'il a besoin de son propre fichier de démarrage pour les utilisateurs qui souhaitent mettre des bashismes dans des fichiers de démarrage.

« Pas un shell de connexion » signifie des choses comme les lancements de scripts et généralement les fenêtres de terminal démarrées par les gestionnaires de fenêtres. Parfois, je configure des systèmes * nix pour avoir .bashrcet BASH_ENVsimplement 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.

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

. .profile

L'une des raisons pour lesquelles tout cela est si complexe est que parfois les gens mettent des choses qui produisent une sortie dans des fichiers de démarrage du shell, ou ils définissent inconditionnellement des invites. Cela provoque beaucoup de problèmes lors de l'exécution de programmes shell et de commandes de backtick dans les langues, sans parler system(3)des programmes C. La façon dont le bashdémarrage est conçu, je pense, pour avoir un fichier où la sortie et le paramètre d'invite sont OK et un fichier où il ne l'est pas. Traditionnellement, un test d'exécution est effectué pour distinguer l'interactivité, par exemple, pour vérifier si l'invite est définie.

αғsнιη
la source