Question Qu'est-ce que le fichier .bashrc?


Unix shells lors du démarrage de la lecture .bashrc fichier et exécuter des commandes écrites en elle. Qu'est-ce que ce fichier et qu'est-ce qu'il exécute?


90
2017-09-30 15:54


origine


Essayez d'ouvrir le fichier dans un éditeur de texte - il est en texte brut. - Will Bickford


Réponses:


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

le page homme bash (par Brian Fox et Chet Ramey; également page info "Bash Startup Files") est la référence faisant autorité:

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

Quand bash est démarré   non interactif, pour exécuter un shell   script, par exemple, il recherche le   variable BASH_ENV dans l'environnement,   étend sa valeur si elle apparaît là,   et utilise la valeur étendue comme   nom d'un fichier à lire et à exécuter.   Bash se comporte comme si le suivant   commande ont été exécutés:

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

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

Le fichier n'est que des commandes shell. Il est généralement utilisé pour modifier des invites, définir des variables d'environnement et définir des procédures de 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 basismes dans les fichiers de démarrage.

"Pas un shell de connexion"signifie des choses comme les lancements de script 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 .bashrc et BASH_ENV juste source .profile. Tant que vous ne vous échappez pas des commandes shell POSIX, vous obtiendrez la même initialisation dans n'importe quel shell.

C'est particulièrement précieux quand sh est vraiment bash, ce qui arrive parfois. Pour ce faire, utilisez:

. .profile

Une des raisons pour lesquelles tout cela est si complexe est que parfois les gens mettent des choses qui produisent des résultats dans les fichiers de démarrage du shell, ou ils définissent inconditionnellement les invites. Cela provoque beaucoup de problèmes lors de l'exécution de programmes shell et de commandes backtick dans les langages, sans parler de system(3) des programmes C. Le chemin bash Je pense que le démarrage est conçu pour avoir un fichier où les paramètres de sortie et d’invite sont OK et un fichier où ce n’est pas le cas. Traditionnellement, un test d'exécution permet de distinguer l'interactivité, par exemple en vérifiant si l'invite est définie.


60
2017-09-30 15:57



Bonne réponse. Juste une citation: Le fichier n'est que des commandes shell. Il est généralement utilisé pour modifier des invites, définir des variables d'environnement et définir des procédures de shell. - smwikipedia
Est-ce que quelqu'un sait ce que signifie la partie rc de .bashrc / .zshrc? - WORMSS
@WORMSS: Bonne question! Vous n'êtes pas le seul à vous interroger à ce sujet. - Caleb Xu


Lorsque Bash démarre, il exécute les commandes dans différents 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, et lit et exécute les commandes du premier qui existe et est lisible.

Lorsqu'un shell de connexion se ferme, Bash lit et exécute les commandes à partir 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 à partir de ~ / .bashrc, si ce fichier existe. Cela 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 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 affiche la date d'aujourd'hui et le nom d'hôte:

PS1="\d \h $ "

12
2017-09-30 15:56



Pourquoi est-ce .profile après .bash_profile? Une logique? - Pacerier


Il devrait 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

9
2017-09-30 15:56



Qu'est-ce que l'utilisation d'alias? - pineapple
@pineapple: Un alias est un moyen d'exécuter une commande, qui peut être longue, avec une commande plus courte. Par exemple, l'alias ll='ls -l' vous permet de taper ll pour exécuter le ls -l commander. - Wuffers