Объясняя содержание файла ~/.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
файл Что означает все написанное?
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
существует, и если это так, то prepends ~/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_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
,