- Profile файл в linux
- Системный профиль
- Файл ~/.bash_profile
- Файл ~/.bash_login
- Файл ~/.profile
- Файл ~/.bashrc
- Файл ~/.bash_logout
- Обзор сценариев дистрибутива Debian
- Обзор сценариев дистрибутива RHEL5
- Практическое задание: профили пользователей
- Корректная процедура выполнения практического задания: профили пользователей
- .Bash_Profile File in Bash
- Benefits of Using the .Bash_Profile or .Profile File
- Different Uses of .Bash_Profile or .Profile File
- Example 1: Set a Variable with a Default Value
- Example 2: Set a New PATH Location
- Example 3: Add the Short Form of the Commands
- Example 4: Print the Current Date and Time in the Startup
- Conclusion
- About the author
- Fahmida Yesmin
Profile файл в linux
Библиотека сайта rus-linux.net
Командная оболочка использует множество загрузочных файлов сценариев, которые исполняются (или подключаются ) в момент ее вызова. Ниже приводится обзор упомянутых загрузочных сценариев.
Системный профиль
Как командная оболочка bash , так и командная оболочка ksh будет проверять существование файла /etc/profile и подключать его в случае существования.
При чтении данного файла вы можете обнаружить (как в дистрибутиве Debian, так и в дистрибутиве Red Hat Enterprise Linux), что именно его силами создается переменная окружения PATH (помимо других переменных окружения). Данный сценарий также может изменять значение переменной окружения PS1, устанавливать значение переменной окружения HOSTNAME и исполнять дополнительные сценарии, такие, как /etc/inputrc .
В примере ниже для демонстрации механизма манипуляций с значением переменной окружения PATH в файле /etc/profile из дистрибутива Debian используется утилита grep.
root@debian7:~# grep PATH /etc/profile PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games" export PATH root@debian7:~#
В следующем примере утилита grep используется для демонстрации аналогичного механизма манипуляций с значением переменной окружения PATH в файле /etc/profile из дистрибутива RHEL/CentOS7.
[root@centos7 ~]# grep PATH /etc/profile case ":$:" in PATH=$PATH:$1 PATH=$1:$PATH export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL [root@centos7 ~]#
Пользователь root может использовать данный сценарий для объявления псевдонимов команд, функций и переменных для каждого из пользователей в системе.
Файл ~/.bash_profile
В том случае, если данный файл существует в домашней директории пользователя, командная оболочка bash осуществит его подключение. В дистрибутивах Debian 5/6/7 данного файла по умолчанию не существует.
В дистрибутивах RHEL7/CentOS7 используется небольшой сценарий ~/.bash_profile , который проверяет существование сценария ~/.bashrc и осуществляет его подключение в случае существования. Также он добавляет путь к директории $HOME/bin к списку путей, хранящемуся в переменной окружения $PATH.
[root@rhel7 ~]# cat /home/paul/.bash_profile # .bash_profile # Получение псевдонимов команд и функций if [ -f ~/.bashrc ]; then . ~/.bashrc fi # Пользовательское окружение и запускаемые программы PATH=$PATH:$HOME/.local/bin:$HOME/bin export PATH [root@rhel7 ~]#
Файл ~/.bash_login
Если сценария .bash_profile не существует, командная оболочка bash будет выполнять проверку существования сценария ~/.bash_login и его подключение в случае существования.
Данного файла не существует по умолчанию ни в дистрибутиве Debian, ни в дистрибутиве Red Hat.
Файл ~/.profile
Если в домашней директории пользователя не существует ни сценария ~/.bash_profile , ни сценария ~/bash_login , командная оболочка bash будет проверять наличие сценария ~/.profile и исполнять его. По умолчанию данного сценария не существует в дистрибутиве Red Hat.
В дистрибутиве Debain данный сценарий может исполнять сценарий ~/.bashrc и добавлять путь к директории $HOME/bin в список директорий, хранящийся в переменной окружения $PATH.
root@debian7:~# tail -11 /home/paul/.profile if [ -n "$BASH_VERSION" ]; then # подключение сценария .bashrc в случае его существования if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi fi # изменение значения переменной PATH с целью включения пути к пользовательской директории бинарных файлов в случае ее существования if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" fi
По умолчанию данного файла не существует в дистрибутивах RHEL/CentOS.
Файл ~/.bashrc
Сценарий ~/.bashrc обычно подключается средствами других сценариев. Давайте рассмотрим задачи, решаемые этим сценарием по умолчанию.
В дистрибутиве Red Hat используется очень простой сценарий ~/.bashrc , проверяющий существование сценария /etc/bashrc и подключающий его в случае существования. Также он позволяет объявлять специальные псевдонимы команд и функции.
[root@rhel7 ~]# cat /home/paul/.bashrc # .bashrc # Подключение файла с глобальными объявлениями if [ -f /etc/bashrc ]; then . /etc/bashrc fi # Раскомментируйте следующую строку, если вам не нравится функция автоматического разделения вывода утилиты systemctl на страницы: # export SYSTEMD_PAGER= # Пользовательские псевдонимы команд и функции
В дистрибутиве Debian данный сценарий немного длиннее и также осуществляет установку значений переменной $PS1, некоторых переменных истории, а также множества активных и неактивных псевдонимов команд.
root@debian7:~# wc -l /home/paul/.bashrc 110 /home/paul/.bashrc
Файл ~/.bash_logout
При завершении работы командная оболочка bash может исполнять сценарий ~/.bash_logout .
serena@deb503:~$ cat .bash_logout # ~/.bash_logout: исполняется bash(1) при завершении работы командной оболочки. # при завершении работы с консолью в целях повышения безопасности экран очищается if [ "$SHLVL" = 1 ]; then [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q fi
В дистрибутиве Red Hat Enterprise Linux 5 данный сценарий осуществляет простой вызов бинарного файла /usr/bin/clear .
[serena@rhel53 ~]$ cat .bash_logout # ~/.bash_logout /usr/bin/clear
В дистрибутивах Red Hat Enterprise Linux 6 и 7 данный сценарий создается, но остается пустым (не содержит ничего кроме комментария).
paul@rhel65:~$ cat .bash_logout # ~/.bash_logout
Обзор сценариев дистрибутива Debian
Ниже приведена таблица для дистрибутива Debian с указанием моментов запуска каждого из описанных стартовых сценариев командной оболочки bash.
Таблица 28.1. Пользовательское окружение дистрибутива Debian
Сценарий | su | su — | ssh | gdm |
---|---|---|---|---|
~/.bashrc | Не запускается | Запускается | Запускается | Запускается |
~/.profile | Не запускается | Запускается | Запускается | Запускается |
/etc/profile | Не запускается | Запускается | Запускается | Запускается |
/etc/bash.bashrc | Запускается | Не запускается | Не запускается | Запускается |
Обзор сценариев дистрибутива RHEL5
Ниже приведена таблица для дистрибутива Red Hat Entrprise Linux 5 с указанием моментов запуска каждого из описанных стартовых сценариев командной оболочки bash.
Таблица 28.2. Пользовательское окружение дистрибутива Red Hat
Сценарий | su | su — | ssh | gdm |
---|---|---|---|---|
~/.bashrc | Запускается | Запускается | Запускается | Запускается |
~/.bash_profile | Не запускается | Запускается | Запускается | Запускается |
/etc/profile | Не запускается | Запускается | Запускается | Запускается |
/etc/bashrc | Запускается | Запускается | Запускается | Запускается |
Практическое задание: профили пользователей
1. Выведите список всех файлов профиля пользователя в вашей системе.
2. Прочитайте содержимое каждого из этих файлов, обычно в них осуществляется подключение дополнительных сценариев.
3. Объявите уникальную переменную, псевдоним команды и функцию в каждом из этих файлов.
4. Воспользуйтесь различными способами получения командной оболочки (su, su -, ssh, tmux, gnome-terminal, Ctrl-Alt-F1, . ) и проверьте, какие из объявленных вами переменных, псевдонимов команд и функций присутствуют в вашем пользовательском окружении.
5. Можете ли вы сходу определить последовательность исполнения обнаруженных стартовых сценариев?
6. Если работа приложения зависит от значения объявленной в файле $HOME/.profile переменной, имеет ли значение существование файла $HOME/.bash_profile или нет?
Корректная процедура выполнения практического задания: профили пользователей
1. Выведите список всех файлов профиля пользователя в вашей системе.
ls -a ~ ; ls -l /etc/pro* /etc/bash*
2. Прочитайте содержимое каждого из этих файлов, обычно в них осуществляется подключение дополнительных сценариев.
3. Объявите уникальную переменную, псевдоним команды и функцию в каждом из этих файлов.
4. Воспользуйтесь различными способами получения командной оболочки (su, su -, ssh, tmux, gnome-terminal, Ctrl-Alt-F1, . ) и проверьте, какие из объявленных вами переменных, псевдонимов команд и функций присутствуют в вашем пользовательском окружении.
5. Можете ли вы сходу определить последовательность исполнения обнаруженных стартовых сценариев?
Нет, так как при совпадении имен псевдонимов команд, функций и переменных производится их перезапись.
6. Если работа приложения зависит от значения объявленной в файле $HOME/.profile переменной, имеет ли значение существование файла $HOME/.bash_profile или нет?
Да, имеет. (Обратитесь к странице руководства man bash /INVOCATION)
Предыдущий раздел: | Оглавление | Следующий раздел: |
Глава 27. Пароли пользователей | Глава 29. Группы пользователей |
.Bash_Profile File in Bash
Bash has many shell script files to set the system configurations. The “.bash_profile” file is one of them. It is a hidden file and it executes every time when the user logs in to the system. Each user has his/her “.bash_profile” file. When a new user account is created, a new “.bash_profile” file is created for that user. This file contains all configuration data of the shell for the currently logged in user, such as the command history, command aliases, environment variables, etc. Many types of settings can be set or unset by editing this file.
Benefits of Using the .Bash_Profile or .Profile File
The “.bash_profile” or “.profile” file is mainly used to set the environment variable for the user or define any script to perform the automated tasks at the startup of the system. The “.bashrc” file can be used for the same purpose. If you change any setup and wants to display the output at the startup only and you don’t want to see the changes every time you open the terminal, it is better to modify it to the “.bash_profile” or “.profile” file instead of the “.bashrc” file.
Different Uses of .Bash_Profile or .Profile File
If you don’t get the “.bash_profile” file, search the “.profile” file in the system. Run the following command to open the file to edit with the root permission:
Example 1: Set a Variable with a Default Value
Add the following lines at the end of the file. A variable is exported with the string value and the printf command is used to print the value of the variable in the terminal at the startup of the system:
#Set the variable with the default value
export name = «Welcome to Linux world»
If the system is restarted and a terminal is opened, the following output appears. The value of the $name variable is printed in the output:
Example 2: Set a New PATH Location
The $PATH variable is used to add the new path location to the existing value of the $PATH variable.
Open the “.bash_profile” file and add the following content at the end of the file. Here, a new path, $HOME/temp, is added in the $PATH variable. This variable is exported and printed later:
printf «The value of the PATH variable: \n $PATH \n «
If the system is restarted and a terminal is opened, the following output appears. The new path location that is added in the $PATH variable is shown in the output. The new path is “/home/fahmida/temp”.
Example 3: Add the Short Form of the Commands
The “alias” command is used to create the short form of any command. If it is required to execute any long command frequently, it is better to create the shortcut of that long command with the “alias” command and use the short form of the command when required. Two simple uses of this command are shown in this example to know the use of the command. The “date” command is used to print the current date and time value while the “mkdir” command is used to create a new directory. Open the “.bash_profile” file and add the short form of these commands at the end of the file.
Restart the system and open the terminal. The use of the “mkdir” command is shown in the following output. The “cdir” command is created as the alias command of the “mkdir” command. Here, a new directory named “tempdir” is created using the “cdir” command. Next, the “ls” command is executed to check whether the new directory is created or not.
Example 4: Print the Current Date and Time in the Startup
Open the “.bash_profile” file and add the following lines to print the current date and time at the startup of the terminal. Here, the short form of the “date” command is used to print the current date and time in the startup that is created in the previous example.
#Display the current date and time
Restart the system and open the terminal. The current date and time are printed in the output to execute the “dt” command.
Conclusion
Many automated tasks like running a script, opening an application, and others can be done very easily using the “.bash_profile” or “.profile” file. Simple uses of this file are shown in this tutorial using different types of examples such as setting the $PATH variable, using different commands, etc. The purposes of using the “.bash_profile” file will be cleared after reading this tutorial.
About the author
Fahmida Yesmin
I am a trainer of web programming courses. I like to write article or tutorial on various IT topics. I have a YouTube channel where many types of tutorials based on Ubuntu, Windows, Word, Excel, WordPress, Magento, Laravel etc. are published: Tutorials4u Help.