Env variable: Hello from environment!
Local variable:
$
Когда оболочка начинает работу, она устанавливает для себя несколько переменных окружения. Имена их стандартны. Программы и сценарии могут запросить их значения вместо того, чтобы пытаться выяснить нужную им информацию самостоятельно.
Несколько таких переменных перечислены в таблице 3.2.
Переменные окружения bash Таблица 3.2
Имя | Назначение |
---|---|
BASH_VERSION | Версия оболочки |
USER | Имя. под которым вы зарегистрировались |
UID, EUID | Реальный и эффективный userID |
HOME | Путь к вашему домашнему каталогу |
HOSTNAME | Имя вашего компьютера |
HOSTTYPE | Тип процессора (i386 или другой) |
OSTYPE | Операционная система (linux-gnu) |
HISTFILE, HISTSIZE | Расположение и размер файла истории команд |
LANG | Язык текущего сеанса |
LINES, COLUMNS | Число строк и столбцов на экране текстовой консоли |
PS1, PS2, PS3, PS4 | Переменные, определяющие вид приглашения оболочки |
PATH | Порядок просмотра каталогов в поисках исполняемого файла с заданным вами именем, когда полный путь к нему не указан |
Чтобы просмотреть значения всех переменных текущего сеанса, как определенных вами, так и переменных окружения, введите команду set.
Обратите внимание на переменную PATH: среди каталогов, в которых bash ищет исполняемый файл, нет текущего. Поэтому в предыдущем примере, если бы вы попытались исполнить сценарий командой myscript, оболочка ответила бы «Command not found». Нужно было указать путь к исполняемому файлу, и мы указали его относительным способом, считая от текущего каталога: ./myscript
.
Переменная PS1 у меня выглядит так: [\u@\h \W]\$
. Это значит, что приглашение оболочки у меня формируется из регистрационного имени (
[[email protected] ~]$ pssave=$PS1 # сохраняю старое значение
[den@dhsilabs PS1="\W>"
~> # новое приглашение состоит из имени текущего каталога и символа >
-> cd My* MyDownloads>
MyDownloads > PS1=$pssave # поиграли, и хватит
[den@dhsilabs MyDownloads]$
Удалить переменную можно командой unset <имя>.
Переменная CDPATH задает список каталогов, в которых будет происходить поиск нужного подкаталога при смене каталога (использовании команды cd). Проще всего пояснить, как работает CDPATH, на примере. Пусть в моем каталоге /home/denis/books/linux-server
есть подкаталоги chapter1 ... chapter20
. Если мне нужно перейти в подкаталог chapter2
, то я могу сэкономить на наборе имени его родительского каталога, внеся это имя в переменную CDPATH:
$ export CDPATH=:.:/home/denis/books/linux-server
Теперь по команде cd chapter2
я попаду в каталог /home/denis/books/linux-server/chapter2
из любого места файловой системы, если подкаталога chapter2
нет в текущем каталоге.
Наверное, многим хочется, чтобы их компьютер не был похож на компьютер коллеги за соседним столом. Кто-то меняет темы, кто-то — обои. Мы попробуем изменить командную строку текстовой консоли. Рассмотрим сценарий, выводящий текущий каталог в правом верхнем углу — обычно этот угол при выводе текста остается свободным. Для чего? А просто так — чтобы было не как у всех.
Для манипуляции с курсором и цветом букв и фона используется утилита tput. В п.2.1.4 вы узнали, как применить ее для восстановления «сбитой» консоли, а сейчас посмотрите на то, что она умеет еще. А потом прочитайте man-страницу.
Листинг 3.1. Демонстрация возможностей утилиты tput
#!/bin/bash
function prompt_command {
# сохраняем текущую позицию курсора
tput sc
# вычисляем длину, необходимую для вывода текущего каталога
# текущий каталог можно узнать с помощью команды pwd
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии