Quelle est la différence entre ~ / .profile et ~ / .bash_profile?

Réponses:

44

La .profileconfiguration de profil d'origine du shell Bourne (alias, sh). bash, étant compatible avec Bourne, il sera lu et utilisé. Le .bash_profiled'autre part est seulement lu par bash. Il est destiné aux commandes incompatibles avec le shell Bourne standard.

bahamat
la source
Si je me trompe, corrigez-moi. .Profile est utilisé par tout shell compatible Bourne, alors que .bash_profile est utilisé par bash uniquement .. ai-je raison?
lakesh
2
@lakesh: Oui, tout shell fournissant une compatibilité complète sera lu .profile. Par exemple, bashet kshnon cshou tcsh. Et zshfournit les deux shet la cshcompatibilité afin qu'il lise les deux .profileet .login, ainsi que zshdes fichiers de points spécifiques.
bahamat
y a-t-il un tutoriel à lire sur ces trucs bash et ksh? jamais entendu parler de cela avant ...
lakesh
4
Vous pouvez commencer avec l' historique du shell UNIX .
bahamat
25

L'original a été shcréé .profileau démarrage.

bashessaiera d’ .bash_profileabord d’ alimenter , mais si cela n’existe pas, il en source .profile1 .

Notez que si bashest démarré en tant que sh(par exemple, /bin/shest un lien vers /bin/bash) ou est démarré avec l' --posixindicateur, il essaie d'émuler sh, et ne lit que .profile.

Notes de bas de page:

  1. En fait, la première des .bash_profile, .bash_login,.profile

Voir également:

Mikel
la source
2
Génial .. Merci ... surtout pour les références ...
lakesh
10

Vous savez qu'il existe de nombreux shell dans le monde UNIX, mais la plupart d'entre eux sont:

  • Bourne shell : /bin/sh(Inventeur: Stephen Bourne)
  • BASH (Bourne Again Shell): /bin/bash(Inventeur: Brian Fox, sous projet GNU) (shell puissant)
  • C shell : /bin/csh(Inventeur: Bill Joy, inventeur de la pile TCP / IP)
  • Coquille Korn : /bin/ksh(Inventeur: David Korn sous les laboratoires Bell)
  • Coquille Z : /bin/zsh(Coquille puissante)
  • TENEX C shell : /bin/tcsh(dérivé de C Shell)
  • Coquille Debian Almquist : /bin/dash(dérivée de la coquille Almquist (sous le projet NetBSD)) (Dash né de Lenny)

Mais votre question concerne ~/.bash_profileet ~/.profile:

Lorsque vous vous connectez à un ordinateur UNIX, celui-ci est redirigé vers votre répertoire de base, en fonction du shell choisi par un administrateur dans le dernier champ, /etc/passwdtel 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 set pour loginet logout. Lorsque vous vous connectez sur bash, ~/.profileest exécuté et lorsque vous logout, ~/.bash_logoutest exécuté. ~/.bash_historyfichier conserve votre commande d'entrée.

Fichier d'initialisation dans chaque shell

TENEX C shell

  • ~/.login Quand vous vous connectez
  • ~/.logout Quand vous vous déconnectez
  • ~/.tcshrccomme ~./bashrcdans bash

Vous pouvez définir variable $histfilecomme nom du fichier d’historique et variable $historycomme nombre de commandes à conserver.

Coquille Z

En effet, c'est un shell puissant et si vous avez du temps libre, assurez-vous de le migrer.

Excepté un autre shell, le shell Z a de nombreux fichiers de configuration et d’initialisation, j’écris:

$ZDOTDIR/.zshenv
$ZDOTDIR/.zprofile
$ZDOTDIR/.zshrc
$ZDOTDIR/.zlogin
$ZDOTDIR/.zlogout
/tmp/zsh*
/etc/zshenv
/etc/zprofile
/etc/zshrc
/etc/zlogin

Remarque: si $ZDOTDIRnon défini, accueil défini.

C shell

Remarque: le shell TENEX C a été créé à partir du shell C. 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

Note: csh est vieux. Utilisez tcsh à la place.

Korn Shell

  • ~/.profile
  • fichier rc: défini par l'utilisateur
  • fichier de déconnexion: N / A

Bourne Again SHELL (BASH)

C'est un shell très très puissant et né sous projet GNU et développé par Bourne Shell.

~/.bash_login
~/.bash_logout
~/.bashrc
~/.bash_profile
~/.bash_history

Lorsque vous vous connectez, bash s'exécute ~/.bash_profileet ~/.bash_profiles'exécute ~/.bashrc. En effet, ce ~/.bashrcn'est pas le fichier d'initialisation de bash, car bash ne l'exécute pas.

Bourne shell

C'est mort. Même lorsque vous utilisez man sh, vous voyez le manuel de dash. [Note de la rédaction: le sujet à propos dashne concerne que les distributions basées sur Debian comme Ubuntu.]

Ta Réponse

~/.bash_profiletravailler sous bash, mais ~/.profiletravailler sous Bourne et Korn Shell.

PersianGulf
la source
2
Chet Ramey était le développeur principal de Bash.
triple-
4

Un shell de connexion est simplement un shell sur lequel vous pouvez vous connecter via ssh ou sur la console. Un shell non-login est un shell que quelqu'un ne peut pas se connecter aussi. Un shell autre que de connexion est souvent utilisé par les programmes / services système.

Quant à votre troisième point. Il est vrai .bashrcest exécuté sur chaque instance du shell. Cependant, il .bash_profilen’est utilisé que lors de la connexion. Ainsi, la raison pour les deux fichiers séparés.

.profileest destiné aux éléments qui ne sont pas spécifiquement liés à Bash, comme les variables d’environnement $ PATH, il devrait également être disponible à tout moment. .bash_profileest spécialement conçu pour les coquilles de connexion ou exécutées lors de la connexion.

Anzenketh
la source
différence entre ~ / .profile et ~ / .bash_profile?
lakesh
2
.profile est destiné aux éléments qui ne sont pas spécifiquement liés à Bash, comme les variables d’environnement PATH, il doit également être disponible à tout moment. .bash_profile est spécifiquement destiné aux shells de connexion ou exécutés lors de la connexion.
Anzenketh
ajoutez cette déclaration à votre réponse .... car c'est là ma question ...
lakeh
Hein? Cela ne répond même pas à la question?
Mikel