J'ai déjà rencontré cette situation dans Debian Pour les utilisateurs nouvellement ajoutés, le chemin de chaque connexion indique sh-42$. est revenu à la normale et il n'y avait aucun moyen de trouver le .bashrc et d'autres fichiers de configuration dans le répertoire utilisateur, provoquant une série de problèmes.
Si tel est le cas, il est très probable que le shell de démarrage par défaut de Linux soit incorrect. Basculez su vers le super utilisateur. Utilisez vi /etc/passwd pour vérifier le shell de démarrage correspondant de l'utilisateur. shells d’autres utilisateurs normaux. S’il est différent, modifiez-le simplement pour qu’il soit identique. .
Par exemple, si le shell d'autres utilisateurs normaux est /bin/bash et que le shell d'un utilisateur anormal est /bin/sh, remplacez-le par /bin/bash.
Le shell bash utilise certains fichiers de démarrage pour définir des variables d'environnement. Ces fichiers de démarrage déterminent certaines configurations du shell bash pour le shell lui-même et les utilisateurs du système. Dans cet article, nous. comprendra la différence entre .bashrc .bash-profile et .profile.
Bash propose deux options de mode dans le shell interactif, connexion et non-connexion.
Lorsque nous utilisons ssh pour nous connecter au système, nous obtenons un shell de connexion interactif, qui lit le fichier de démarrage lorsqu'il est appelé.
Cependant, lorsque nous appelons un nouveau shell sur un shell déjà connecté, nous obtenons un shell interactif et sans connexion. Ce shell n'exécute que les fichiers .bashrc
Lorsqu'un shell ne nécessite aucune intervention humaine pour exécuter des commandes, on l'appelle un shell non interactif. Par exemple, lorsqu'un script génère un sous-shell pour exécuter une commande, le sous-shell est un shell non interactif, le sous-shell n'exécute aucun fichier de démarrage, il hérite des variables d'environnement du shell qui l'a créé.
Le fichier de démarrage contient les commandes qui doivent être exécutées au démarrage du shell. Par conséquent, le shell exécute automatiquement les commandes de ces fichiers de démarrage pour configurer le shell. Ce processus se produit avant l'affichage de l'invite de commande.
3.1 Signification de .bash_profile
Le fichier .bash_profile contient des commandes pour définir des variables d'environnement, le shell héritera donc de ces variables.
Dans un shell de connexion interactif, bash recherche d'abord le fichier /etc/profile. S'il est trouvé, bash le lira et l'exécutera dans le shell actuel. Le résultat est que /etc/profile définit la configuration de l'environnement pour tous les utilisateurs
De même, bash vérifie ensuite si .bash_profile existe dans le répertoire personnel (le répertoire entré par cd ~). S'il est présent, bash exécute .bash_profile dans le shell actuel, et Bash arrête alors de rechercher d'autres fichiers tels que .bash_login et .profile.
Si bash ne trouve pas .bash_profile, alors il recherchera .bash_login et .profile dans l'ordre et n'exécutera que le premier fichier lisible.
Étudions un exemple de fichier .bash_profile. Ici, nous réinitialisons et exportons la variable PATH
echo "Bash_profile execution starts.." PATH=$PATH:$HOME/bin; export PATH; echo "Bash_profile execution stops.."
Avant de nous connecter de manière interactive à l'invite de commande du shell, nous verrons la sortie suivante
Bash_profile execution starts.. Bash_profile execution stops.. [example@example ~]$
3.2 Signification de .bashrc
.bashrc contient des commandes spécifiques au shell bash . Chaque shell interactif sans connexion lit .bashrc en premier, et généralement, .bashrc est le meilleur endroit pour ajouter des alias et des fonctionnalités liées à bash.
Le shell bash recherche le fichier .bashrc dans le répertoire personnel et utilise source pour l'exécuter dans le shell actuel.
Faites-nous connaître le fichier .bashrc à travers un exemple
echo "Bashrc execution starts.." alias elui='top -c -u $USER' alias ll='ls -lrt' echo "Bashrc execution stops.."
Avant l'invite de commande du shell interactif sans connexion, nous verrons le résultat suivant
[example@example ~]$ bash Bashrc execution starts.. Bashrc execution stops.. [example@example ~]$
3.2 La signification de .profile
Connexion dans le shell interactif Pendant le processus, si .bash_profile n'existe pas dans le répertoire personnel, bash recherche .bash_login Si **.bash_login** est trouvé, bash l'exécute. Si .bash_login n'existe pas dans le répertoire personnel, bash recherche .profile et l'exécute.
.profile peut maintenir la configuration avec .bash_profile ou .bash_login. Il contrôle les invites qui apparaissent, les sons du clavier, le shell à ouvrir et les paramètres de profil individuels qui remplacent les variables définies dans le fichier /etc/profile.
Le shell bash exécutera .bash_profile chaque fois que vous vous connecterez de manière interactive. Si .bash_profile n'est pas trouvé dans le répertoire personnel, bash exécutera le premier fichier lisible trouvé à partir de .bash_login et .profile. Cependant, à chaque démarrage d'un shell interactif sans connexion, bash crée .bashrc.
Normalement, les variables d'environnement seront placées dans .bash_profile. Étant donné que le shell de connexion interactif est le premier shell, tous les paramètres par défaut requis pour la configuration de l'environnement sont placés dans **.bash_profile**. Par conséquent, ils ne sont définis qu’une seule fois et sont hérités dans tous les sous-shell.
De même, les alias et les fonctions seront également placés dans .bashrc pour garantir qu'ils sont chargés à chaque fois qu'un shell est lancé à partir d'un environnement existant
Cependant, pour éviter les différences dans les paramètres du shell interactif de connexion et de non-connexion. .bash_profile appelle .bashrc. Par conséquent, nous verrons l'extrait de code suivant inséré dans **.bash_profile** afin que sur chaque shell de connexion interactif, le .bashrc soit également exécuté sur ce même shell :
if [ -f ~/.bashrc ]; then . ~/.bashrc; fi PATH=$PATH:$HOME/bin export PATH
注意:
总而言之,在使用环境之前,shell需要其启动文件以配置shell环境。
在本文中,我们检查了各种shell模式。然后,我们了解了各种bash启动文件的重要性。最后,我们检查了这些启动文件之间的差异。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!