Quelle est la différence entre ~/.profile
et ~/.bash_profile
?
Le .profile
était la configuration de profil d'origine du Bourne Shell (a.k.a., sh
). bash
, étant un shell compatible Bourne le lira et l'utilisera. Le .bash_profile
en revanche n'est lu que par bash
. Il est destiné aux commandes incompatibles avec le Bourne Shell standard.
Le sh
d'origine .profile
au démarrage.
bash
essaiera de source .bash_profile
d'abord, mais si cela n'existe pas, il source .profile
1.
Notez que si bash
est démarré en tant que sh
(par exemple /bin/sh
est un lien vers /bin/bash
) ou démarre avec le --posix
flag, il essaie d'émuler sh
, et lit seulement .profile
.
Notes de bas de page:
.bash_profile
, .bash_login
, .profile
Voir également:
Vous savez que de nombreux shells existent dans le monde UNIX, mais la plupart d'entre eux sont:
/bin/sh
(Inventeur: Stephen Bourne)/bin/bash
(Inventeur: Brian Fox, sous GNU) (Shell puissant)/bin/csh
(Inventeur: Bill Joy, inventeur de la pile TCP/IP)/bin/ksh
(Inventeur: David Korn sous Bell Labs)/bin/zsh
(Shell puissant)/bin/tcsh
(dérivé de C Shell)/bin/dash
(Dérivé d'Almquist Shell (cendre sous le projet NetBSD)) (Dash né de lenny)Mais votre question concerne ~/.bash_profile
et ~/.profile
:
Lorsque vous vous connectez à une machine UNIX, celle-ci redirige vers votre répertoire personnel, selon le Shell choisi par un administrateur dans le dernier champ de /etc/passwd
tel que :
mohsen:x:1000:1000:Mohsen Pahlevanzadeh,,,:/home/mohsen:/bin/bash
Votre Shell s'exécute et, par défaut, chaque Shell a un fichier défini pour login
et logout
. Lorsque vous vous connectez sur bash, ~/.profile
est exécuté et lorsque vous logout
, ~/.bash_logout
est exécuté. ~/.bash_history
le fichier conserve votre commande d'entrée.
~/.login
Lorsque vous vous connectez~/.logout
Lorsque vous vous déconnectez~/.tcshrc
pareil que ~./bashrc
en bashVous pouvez définir la variable $histfile
comme nom de fichier d'historique et variable $history
comme nombre de commandes à conserver.
En effet, c'est un Shell puissant et si vous avez du temps libre, assurez-vous d'y migrer.
À l'exception des autres Shell, Z Shell a de nombreux fichiers de configuration et d'initialisation, j'écris juste:
$ZDOTDIR/.zshenv
$ZDOTDIR/.zprofile
$ZDOTDIR/.zshrc
$ZDOTDIR/.zlogin
$ZDOTDIR/.zlogout
/tmp/zsh*
/etc/zshenv
/etc/zprofile
/etc/zshrc
/etc/zlogin
Remarque: si $ZDOTDIR
unset, home set.
Remarque: TENEX C Shell est issu de C Shell. C Shell prend en charge par BSD. Si vous connaissez la programmation en langage C, vous devriez être à l'aise car sa syntaxe est similaire.
~/.login
~/.cshrc
~/.logout
Remarque: csh est ancien. Utilisez plutôt tcsh.
~/.profile
C'est un shell très très puissant et né sous GNU et forké par Bourne Shell.
~/.bash_login
~/.bash_logout
~/.bashrc
~/.bash_profile
~/.bash_history
Lorsque vous vous connectez, bash exécute ~/.bash_profile
et ~/.bash_profile
s'exécute ~/.bashrc
. En effet ~/.bashrc
n'est pas un fichier d'initialisation bash, car bash ne l'exécute pas.
C'est mort. Même lorsque vous utilisez man sh
, vous voyez le manuel de dash
. [Note de l'éditeur: le bit sur dash
ne s'applique qu'à Debian et aux distributions basées sur Debian comme Ubuntu.]
~/.bash_profile
fonctionne sous bash, mais ~/.profile
travail sous Bourne et Korn Shell.
Un Shell de connexion est simplement un Shell auquel vous pouvez vous connecter via ssh ou sur la console. Un Shell sans connexion est un Shell auquel quelqu'un ne peut pas se connecter également. Un shell sans connexion est souvent utilisé par les programmes/services système.
Quant à votre troisième point. C'est vrai .bashrc
est exécuté sur chaque instance du Shell. Cependant .bash_profile
n'est utilisé que lors de la connexion. D'où la raison des deux fichiers distincts.
.profile
est pour les choses qui ne sont pas spécifiquement liées à Bash, comme les variables d'environnement $ PATH, elle devrait également être disponible à tout moment. .bash_profile
est spécifiquement pour les shells de connexion ou les shells exécutés lors de la connexion.