Объяснение содержания ~/.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

Может любой объяснять содержание ~/.profile файл? Таким образом, когда Вы вводите ~/.profile файл, что означает вся запись?

0
задан 28 March 2016 в 17:28

1 ответ

Упрощенная версия:

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

Это разделяет проверки ли ~/.profile самостоятельно получается экземпляром Bash и если это так источниками в свою очередь ~/.bashrc; это - способ включать настройки пользователя, сохраненные в ~/.bashrc например, также в оболочках входа в систему, которые обычно не получают ~/.bashrc;

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

Эта часть проверяет ли ~/bin существует и если это так предварительно ожидает ~/bin к текущему значению $PATH; это сделано так, чтобы потенциальные исполняемые файлы / сценарии, существующие в ~/bin имейте приоритет по исполняемым файлам / сценарии, существующие в других путях, включенных в $PATH (например, путем размещения исполняемого файла назван cat в ~/bin, при выполнении cat тот исполняемый файл был бы выполнен вместо обычного /bin/cat).


Подробная версия:

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

Эта часть проверяет ли расширение $BASH_VERSION имеет ненулевую длину (if [ -n "$BASH_VERSION" ]), и если это так, если расширение $HOME/.bashrc существует и регулярный файл (if [ -f "$HOME/.bashrc" ]), расширение $HOME/.bashrc получен.

Начиная с наборов Bash $BASH_VERSION после вызова, проверяя, ли $BASH_VERSION имеет ненулевую длину, устойчивый способ определить, получается ли сам файл экземпляром Bash.

Поэтому при вызове Bash как оболочки входа в систему на Ubuntu настройки пользователя сохранили в ~/.bashrc включены (это не обязательно имеет место для других дистрибутивов); сам Bash только источники ~/.profile при вызове как оболочка входа в систему, и это - способ обойти это;

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

Эта часть проверяет ли расширение $HOME/bin существует и каталог (if [ -d "$HOME/bin" ]), и если это так предварительно ожидает расширение $HOME/bin к текущему значению $PATH (PATH="$HOME/bin:$PATH"; $HOME обычно устанавливается на корневой каталог пользователя).

Это сделано так, чтобы потенциальные исполняемые файлы / сценарии, существующие в расширении $HOME/bin имейте приоритет по исполняемым файлам / сценарии, существующие в других путях, включенных в $PATH.

2
ответ дан 29 September 2019 в 09:19

Другие вопросы по тегам:

Похожие вопросы: