Linux: Полное руководство
Шрифт:
Помните, что замене подлежит первое вхождение подстроки «что_заменить».
Если вы хотите не изменить, а дополнить последнюю команду (например, пропустить ее вывод через фильтр more), введите
3.4.3. Переменные
Как любой язык программирования, командный язык bash поддерживает переменные. Тип их — строковый. Оператор присваивания выглядит так:
Имя
Операция подстановки значения переменной обозначается символом $ (не путайте с приглашением bash). Вывести значение переменной можно командой echo:
Установленные таким образом переменные доступны только встроенным командам bash. Чтобы они стали доступны дочерним процессам (программам и командным сценариям, запускаемым из-под bash), их нужно поместить в окружение bash. Делается это командой export:
Чтобы почувствовать разницу, создайте простейший командный сценарий, выводящий значения двух переменных. Для записи сценария можно создать пустой файл и открыть его в каком-нибудь ASCII-редакторе, а можно вспомнить п.2.1.4 и воспользоваться командой
Комбинация клавиш Ctrl+D завершает ввод и закрывает файл, и вы снова видите приглашение оболочки.
Получившийся файл сценария нужно сделать исполняемым (п.2.1.4):
Теперь осталось определить переменную hello и запустить сценарий:
Когда оболочка начинает работу, она устанавливает для себя несколько переменных окружения. Имена их стандартны. Программы и сценарии могут запросить их значения вместо того, чтобы пытаться выяснить нужную им информацию самостоятельно.
Несколько таких переменных перечислены в таблице 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». Нужно было указать путь к исполняемому файлу, и мы указали его относительным способом, считая от текущего каталога:
Переменная PS1 у меня выглядит так:
Удалить переменную можно командой unset <имя>.
Переменная CDPATH задает список каталогов, в которых будет происходить поиск нужного подкаталога при смене каталога (использовании команды cd). Проще всего пояснить, как работает CDPATH, на примере. Пусть в моем каталоге