GNU/Linux >> Tutoriels Linux >  >> Linux

Pourquoi ajouter ~/.profile à ~/.bash_profile ?

Lors de l'installation de RVM, le message suivant s'affiche :

* WARNING: You have '~/.profile' file, you might want to load it,
  to do that add the following line to '/home/dotancohen/.bash_profile':

    source ~/.profile

Je suis inquiet car mon fichier ~/.profile contient xmodmap ~/.Xmodmap que je ne veux évidemment pas exécuter (en échangeant mes touches CapsLock et ESC) chaque fois que j'ouvre un nouveau shell.

Pourquoi les développeurs avisés de RVM pourraient-ils suggérer de s'approvisionner en .profile ? dans .bash_profile ?

Réponse acceptée :

.profile et .bash_profile sont identiques en termes de moment où ils sont censés être exécutés :ils sont exécutés lorsque vous vous connectez. La différence est que seul bash exécute .bash_profile; Les shells de style Bourne (dash, ksh, etc.) exécutent .profile . Bash lui-même exécute .profile si .bash_profile n'existe pas.

Même si vous avez bash comme shell de connexion, .profile est souvent celui qui est exécuté lorsque vous vous connectez en mode graphique :de nombreuses distributions configurent le script de démarrage de la session X pour qu'il s'exécute sous sh et chargez .profile .

D'où le conseil d'utiliser .profile au lieu de .bash_profile pour faire des choses comme définir des variables d'environnement. Sauf si vous avez absolument besoin de fonctionnalités spécifiques à bash, mettez simplement tout dans .profile . Mais même si vous le faites, il y a une raison de garder un .bash_profile , c'est-à-dire que lorsque bash le charge, il ne charge pas .bashrc , même si c'est interactif. Par conséquent, pour la plupart des gens, ~/.bash_profile doit être composé de ces deux lignes :

. ~/.profile
case  $- in *i*) . ~/.bashrc;; esac

Vous ne devriez pas exécuter xmodmap depuis .profile . Ceci n'est pas exécuté lorsque vous ouvrez un nouveau shell, mais il est exécuté, par exemple, lorsque vous vous connectez à distance avec SSH avec transfert X11. Malheureusement, aucun fichier standard n'est chargé lorsque vous vous connectez en mode graphique. Debian charge ~/.xsessionrc (Je pense que cela s'applique à tous les gestionnaires d'affichage, sauf Gdm qui charge ~/.xprofile Au lieu); d'autres distributions ont des configurations différentes. Si vous avez besoin d'une portabilité entre distributions, il peut être plus facile de configurer votre environnement de bureau pour exécuter xmodmap quand ça commence. Si tout ce que vous faites est d'échanger CapsLock et Ctrl, cela peut être fait avec les paramètres XKB auxquels la plupart des environnements de bureau modernes fournissent une interface.

En relation :Comment définir une variable égale à la sortie d'une commande dans GRUB2 ?
Linux
  1. Qu'est-ce qu'un TAM et pourquoi voudriez-vous en être un ?

  2. Pourquoi utiliser sudo ?

  3. Pourquoi LXC quand il y a Linux-vserver ?

  4. Comment ajouter au groupe lorsque le nom a un espace ?

  5. Transfert IP =quand et pourquoi est-ce nécessaire ?

Qu'est-ce qu'un Homelab et pourquoi devriez-vous en avoir un ?

Pourquoi ce pipeline shell sort-il ?

Synchronisation du profil bash entre ordinateurs

Pourquoi est-ce que je reçois une autorisation refusée lors de l'exécution de ssh-add ?

Pourquoi UASP n'est pas utilisé

Pourquoi est-il possible de retourner l'écran ?