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
let backwash=$(tput cols)-$(echo $(pwd) | wc -m)-2
# позиционируем курсор Y=0, X=длина
tput cup 0 ${backwash}
# установка цвета букв, начертание — жирное
tput setaf 4 ; tput bold
# выводим полный путь в квадратных скобках
echo -n ' ['
# устанавливаем цвет
tput setaf 6
# отображаем путь
echo -n '$(pwd)'
# устанавливаем цвет для закрывающей скобки
tput setaf 4 ; tput bold
# отображаем ]
echo -n ']'
# возвращаем курсор в исходную позицию
tput rc
}
PROMРТ_СОММAND=prompt_соmmand
GREEN='[$(tput setaf 2 ; tput bold)]'
WHITE='[$(tput setaf 7 ; tput bold)]'
NO_COLOUR='[$(tput sgr0)]'
case $TERM in
xterm*|rxvt*)
TITLEBAR='[ 33]0;u@h 07]'
;;
*)
TITLEBAR=''
;;