# ~/.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
файл, что означает вся запись?
Упрощенная версия:
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
.