Linux

2 — variable environment

Опубликовано

Начнём делать первые шаги по настройке системы. Скачаем и установим текстовый редактор. Познакомимся с такими понятиями как мягкие и жёсткие ссылки. Научимся создавать Алиас.


Переменные окружения среды и псевдонимы.

Работая в оболочке shell вам доступны глобальные переменные среды окружения. Например, если вы хотите вывести на экран имя пользователя, от которого выполняете команды, достаточно обратиться к переменной $USER

echo $USER

Так же очень полезная, хоть и не очень очевидная, переменная $PATH. Эта переменная хранит в себе список дирректорий, в которых система будет искать исполняемые команды.

echo $PATH

то есть, для того, чтобы полностью не прописывать каждый раз путь к исполняемому файлу, нам достаточно прописать команду в консоль и, поиск исполняемого файла будет производиться в дирректориях указанных в $PATH.

Чтобы ознакомиться со всеми переменными окружающей среды, сохраните их в файл.

env > environment.txt 

Ещё одна переменная, которую вы можете использовать — $HOME — это адрес домашнего каталога. То место, где вы оказываетесь, когда запускаете терминал. Чтобы быстро переместиться в домашний каталог, введите

cd ~

Переменные используются при запуске программ. Посмотрите значение переменной LANG, и введите в терминале команду firefox, интерфейс браузера будет на том языке, который указан в переменной LANG. Теперь попробуйте сменить значение этой переменной, прописав в терминале..

LANG=ru_RU.UTF-8

И заново запустите firefox через терминал. Вы увидите, что язык интерфейса сменился. Все изменения вносимые непосредственно в терминале, будут действовать только в текущей сессии терминала. В этом легко убедиться, открыв новое окно терминала и введя команду env.

Процесс

В момент запуска любой программы, она запускает несколько подпрограмм для считывания файлов настроек и созданию своих конфигурационных файлов, которые могут ей понадобиться при работе. Вся эта совокупность действий называется процессом.

Bash тоже является программой и в момент запуска, она считывает информацию с нескольких файлов.

  • /etc/profile — Срабатывает в момент когда любой пользователь авторизуется через SSH.
  • /etc/bashrc — Срабатывает в момет старта shell для локального пользователя
  • ~/.bash_profile — Срабатывает в момент авотизации конкретного пользователя через SSH.
  • ~/.bashrc — Считывается при каждом открытии терминала, хранит настройки для конкретного пользователя.

check-point:

  • Откройте файл /etc/bashrc и установите значение переменной VARIABLE в значение from_etc.
  • в терминале введите 
source /etc/bashrc
  • убедитесь что переменная VARIABLE хранит в себе правильное значение 
echo $VARIABLE
  • Откройте файл ~/.bashrc и замените переменную на значение home.
VARIABLE=home
  • Введите 
source ~/.bashrc

и посмотрите значение переменной.

Перед тем как перейти к следующей теме, хотелось бы упомянуть ещё парочку файлов.

/etc/motd — тут можно написать текст, который будет выведен после входа пользователя и загрузке терминала. Например : «Hello world»

/etc/issue — Содержимое этого файла будет показано пользователю, до того как он авторизуется на вашем компьютере через ssh. В нём можно указать некоторые инструкции или правила.

Ручная установка программ и настройка окружения.

Линукс очень далеко шагнул в плане дружелюбности интерфейса и установка подавляющего большинства программ сводится к, привычному для пользователя, выбора в магазине приложений типа Google Store или AppStore. Даже работая в терминале всю установку программы можно осуществить просто вводом одной команды. Мы же рассмотрим наиболее редкий случай, когда программы которую вы хотите установить ни оказалось ни в одном репозиториев, но зато у вас есть архив с данной программой. В качестве примера возьмём архив с текстовым редактором кода Sublime4. Этой программы не оказалось в моей стандартной поставке linux. Вы можете установить абсолютно любую программу. Алгоритм будет похож.

  1. Скачайте архив с приложение с сайта. Sublime4. Я выбрал 64bit.tar.xz
  2. Откройте терминал и перейдите в каталог, куда скачался ваш архив
  3. Используя команду ls убедитесь, что файл присутствует.
  4. Для разархивирования введите команду tar -xvf [имя архива] Чтобы полностью не набирать имя архива, введите несколько первых букв и нажмите tab, если имя архива уникально, оно само допишется
  5. Пойдёт процесс распаковки. В результате в списке файлов появится новая папка. Перейдите в неё cd [имя папки] и введите команду ls -l
  6. Среди списка файлов, должна находиться исполняемая программа sublime_text. Введите команду
./sublime_text

Обратите внимание на обязательную установку ./

  1. Теперь попрбуйте ввести команду sublime. Если в вашей системе не было установлено редактора sublime до этого, то вы увидите предупреждение
sublime: command not found

Ссылки мягкие и жёсткие

  1. soft link — аналог ярлыка в Windows. Файл, который указывает на другой файл в системе. Практически всё, что вы делаете с сылкой, отражается на исходном файле. Удаление мягкой ссылки не приводит к удалению исходного файла. При удалении исходного файла ссылка перестаёт работать.
  2. hard link — не является ярлыком, но ещё одним именем файла. Хотя программа (файл) физически находится в одном месте ПЗУ, она может иметь несколько разных имён. Все имена файла равноценны. Даже если вы удалите ссылку оригинал, файл всё равно будет существовать, до тех пор, пока все жесткие ссылки на него не будут уничтожены.

Введите команду

stat sublime_text

вы увидите метаинформацию о файле sublime_text. Количество ссылок на этот файл должно равняться 1.

Hard link

Теперь создадим hard link на этот файл и посмотрим как измениться i-node.

ln sublime_text sublime4

Создав ссылку в вашем каталоге появится новый файл с именем sublime4 который тоже указывает на программу sublime. Введя в терминале

./sublime4

у вас откроется текстовый редактор.

Опять введите

stat sublime_text

И вы увидите что что количество ссылок на файл увеличилось на 1. Сразу же введите

stat sublime4

И обратите внимание на поле Inode: оно указывает на индекс i-node. У файла sublime_text и sublime4 он одинаковый, это говорит о том, что оба этих файла ссылаются на одну i-node.

Soft link

Для того чтобы создать ярлык в linux, в команду ln достаточно передать флаг -s. Находясь в каталоге c файлом sublime4 введите

ln -s sublime4 sublime

Вы только что дали команду создать ярлык sublime, который будет ссылаться на файл sublime4.

Сразу вводим

stat sublime

Сразу обратите внимание, на первую строку, в которой указано куда ссылается этот файл. Номер i-node отличается от жёсткой ссылки. Так же количество ссылок стало равно 1, поскольку ярлык — это отдельный самостоятельный файл. Первая буква в строке с правами доступа сменилась на l, и говорит о том, что это link.

Введя в консоли ./sublime вам откроется знакомый вам редактор. Но…

Переместите эту ссылку, например на уровень выше.

mv sublime ../

и попробуйте обратиться к ней

../sublime

вы получите предупреждение о том, что файла на который ссылается ярлык не существует. Хотя введя

stat ../sublime

Вы увидите inode вашего ярлыка, который по прежнему ссылается на sublime4. И проблема, как-раз, в том, что при создании ярлыка мы указали относительный путь и ярлык пытается найти файл в том же каталоге в котором он находится, а его там нет. Удалите ярлык rm ../sublime. И теперь при создании ярлыка укажите абсолютный путь, у меня он будет выглядеть вот так.

ln -s /home/parallels/Downloads/sublime_text/sublime4 sublime

Теперь при вводе stat sublime вы увидите полный путь к исполняемому файлу и можете спокойно перемещать ярлык.

Check-point

Удаление ссылок

  • в вашем домашнем каталоге создайте папку copy_downloads
  • скопируйте туда файлы из папки Downloads
cp -r Downloads copy_downloads
  • Попробуйте создать жёсткую ссылку на каталог copy_downloads
  • После неудачи создайте мягкую ссылку
ln -s copy_downloads link_to_downloads
  • Теперь удалите ссылку rm link_to_downloads/ (после неудачи попробуйте убрать / в конце команды)
  • Введите команду history и используя !номер заново создайте ссылку
  • А теперь используйте утилиту со следующими флагами. rm -rf link_to_downloads/
  • Убедитесь, что ссылка всё ещё существует, однако, проверьте содержимое copy_downloads.
  • Сделайте соответствующие выводы
  • Удалите copy_downloads и сслыку.

Быстрый запуск прграмм

Посмотрите текущий рабочий каталог в котором находится ярлык sublime, запомните его и введите команду

cd ~

Вас перебросит в домашний каталог. У меня это /home/parallels/. Теперь чтобы открыть sublime, мне придётся прописать путь до него. (В папке Downloads есть папка sublime_text в которой у меня находится ярлык sublime созданный ранее).

/home/parallels/Downloads/sublime_text/sublime

Не очень то удобно, не так ли?!

Alias

Перывй способ сократить длинную команду до нескольких символов — это создать Alias(псевдоним) для команды.

alias sublime="~/Downloads/sublime_text/sublime"

Теперь достаточно просто ввести sublime и это команда будет развёрнута в полную(~/Downloads/sublime_text/sublime).

Посмотреть список всех псевдонимов можно введя команду

alias

Возможно, в системе уже будут какие-то предустановленные Alias.

Но стоит вам закрыть окно терминала и открыть его заново, вы обнаружите, что ваш alias пропал. Тот метод, который мы рассмотрели создаёт временный псевдоним только на период одной сессии. Это может быть полезно, когда вы планируете в текущем сеансе часто пользоваться командой, которую долго набирать, но сохранять её на постоянной основе не имеет смысла.

Чтобы создать постоянные alias, откройте файл ~/.bashrc и в конец файла добавьте команду создания псевдонима. alias sublime=»~/Downloads/sublime_text/sublime». Перезагрузите терминал. Или используйте команду suorce .bashrc

  • Добавьте псевдоним alias la=»ls -la —color=auto»

Быстрые команды

Более предпочтительный способ для запуска программ — это помещение исполняемого файла в одну из директорий переменной среды $PATH. Выведите на экран список директорий $PATH

echo $PATH 

Один путь от другого отделяется двоеточием. Я получил вот такой список.

/home/parallels/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Для работы я выберу первую директорию /home/parallels/.local/bin. В неё я помещу ярлык sublime, который ссылается на исполняемый файл sublime4. Приступаем

mv ~/Downloads/sublime_text/sublime /home/parallels/.local/bin/

Теперь когда вы вводите команду sublime, терминал обращается поочереди ко всем директориям переменной $PATH и ищет, нет ли там файла с названием sublime. Обнаружив ярлык, терминал обращается по пути указанному в файле и открывает вам программу на которую ссылается ярлык.

Задачи:

  • Используя терминал удалите hard link sublime4
  • Восстановите работоспособность команды sublime не создавая жёстких ссылок.
  • Сделайте команду sublime доступной суперпользователю.
  • Создайте несколько Alias команд на ваше усмотрение, которые будут работать постоянно. (Посмотрите рекомендации в интернете)—расширение
  • Измените цвет prompt string(PS). 
  • Одной командай скопируйте все скрытые файлы из домашней директории пользователя в директорию ./copy ? Имя пользователя неизвестно.
  • Создать переменную start_session, которая будет хранить в себе дату запуска терминала.

Добавить комментарий

Ваш адрес email не будет опубликован.