2 votes

Explication du contenu du fichier ~/.profile

# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
    fi
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

Quelqu'un peut-il expliquer le contenu du ~/.profile fichier ? Ainsi, lorsque vous entrez dans le ~/.profile fichier que signifient tous ces écrits ?

2voto

ieplugin Points 216

Version simplifiée :

if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
    fi
fi

Cette partie vérifie si ~/.profile est lui-même alimenté par une instance de Bash, et si c'est le cas, les sources à leur tour ~/.bashrc ; il s'agit d'un moyen d'inclure les paramètres de l'utilisateur stockés dans le fichier ~/.bashrc par exemple, également dans les shells de connexion, qui n'ont normalement pas de source ~/.bashrc ;

if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

Cette partie vérifie si ~/bin existe, et si c'est le cas, il ajoute en préambule ~/bin à la valeur actuelle de $PATH ; ceci est fait pour que les éventuels exécutables / scripts présents dans les fichiers ~/bin sont prioritaires sur les exécutables / scripts présents dans d'autres chemins d'accès inclus dans les $PATH (par exemple en plaçant un exécutable nommé cat en ~/bin lors de l'exécution cat cet exécutable serait exécuté à la place de l'habituel /bin/cat ).


Version détaillée :

if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
    fi
fi

Cette partie vérifie si l'expansion de $BASH_VERSION a une longueur non nulle ( if [ -n "$BASH_VERSION" ] ), et si c'est le cas, si l'expansion de $HOME/.bashrc existe et est un fichier normal ( if [ -f "$HOME/.bashrc" ] ), l'expansion de $HOME/.bashrc est d'origine.

Puisque les ensembles Bash $BASH_VERSION lors de l'invocation, en vérifiant si $BASH_VERSION a une longueur non-nulle est un moyen robuste de déterminer si le fichier lui-même est sourcé par une instance de Bash.

C'est pourquoi, lorsque l'on invoque Bash en tant que login Shell sur Ubuntu, les paramètres de l'utilisateur stockés dans le fichier ~/.bashrc sont incluses (ce qui n'est pas nécessairement le cas pour d'autres distributions) ; Bash lui-même n'utilise que les sources ~/.profile lorsqu'il est invoqué en tant que Shell de connexion, et ceci est un moyen de contourner ce problème ;

if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

Cette partie vérifie si l'expansion de $HOME/bin existe et est un répertoire ( if [ -d "$HOME/bin" ] ), et si c'est le cas, il ajoute l'expansion de $HOME/bin à la valeur actuelle de $PATH ( PATH="$HOME/bin:$PATH" ; $HOME est normalement le répertoire personnel de l'utilisateur).

Cela permet d'éviter que d'éventuels exécutables / scripts présents dans l'extension de $HOME/bin sont prioritaires sur les exécutables / scripts présents dans d'autres chemins d'accès inclus dans les $PATH .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X