GitHub Actions для Terraform
Если вы используете Terraform и хотите интегрировать его с CI/CD процессами на GitHub Actions, используйте библиотеку terraform-github-actions.
С её помощью вы сможете:
- Автоматизировать и тестировать Terraform-код.
- Настраивать проверки terraform plan и terraform apply.
- Ускорить деплой инфраструктуры.
Документация в репозитории описывает примеры использования и тонкости настройки.
https://github.com/dflook/terraform-github-actions
Если вы используете Terraform и хотите интегрировать его с CI/CD процессами на GitHub Actions, используйте библиотеку terraform-github-actions.
С её помощью вы сможете:
- Автоматизировать и тестировать Terraform-код.
- Настраивать проверки terraform plan и terraform apply.
- Ускорить деплой инфраструктуры.
Документация в репозитории описывает примеры использования и тонкости настройки.
https://github.com/dflook/terraform-github-actions
❤2
Системные утилиты для безопасного удаления файлов с HDD
Windows
В данном примере мы форматируем том D в файловую систему NTFS, при этом даем операционной системе команду предварительно перезаписать весь раздел нулями 10 раз, используя параметр /p («passes»), задающий количество проходов.
Linux
Быстро и надежно удаляет один или несколько файлов.
В этом примере мы перезаписали файл file.txt случайными данными 40 раз подряд (параметр -n, по умолчанию же shred совершает 25 проходов) и затем удалили его (параметр -u, поскольку по умолчанию shred не удаляет файлы, а сразу перезаписывает).
Если нам внужно дополнительно скрыть и сам факт «зачистки», то можете воспользоваться параметром -z:
Единственный недостаток shred — данная утилита не умеет работать с директориями. Поэтому если вам требуется уничтожить содержимое целого каталога с вложенными папками, стоит воспользоваться wipe. В данном примере мы отдали команду рекурсивно (-r) удалить все, что находится в папке private, а также отключили запрос подтверждения удаления папок и файлов (-f), которое wipe выводит по умолчанию. Среди интересных дополнительных опций, поддерживаемых утилитой, стоит выделить принудительное выполнение chmod для каталогов и файлов, защищенных от перезаписи (-c), работу в тихом режиме (-s) и возможность заставить wipe следовать символическим ссылкам (-D, конфликтует с -r).
Mac OS
В версиях операционной системы с 10.4 по 10.10 вы могли инициировать перезапись файлов, переместив их в корзину, а затем выбрав в Finder опцию «Очистить корзину необратимо», однако впоследствии Apple от нее отказалась. Вплоть до версии 10.11 для безопасного удаления данных можно было воспользоваться консольной командой srm. В данном примере мы рекурсивно удаляем содержимое папки private (-r), перезаписывая каждый файл случайными данными 7 раз подряд (-m). Также можно выбрать однократную перезапись файлов (-s) или же не указывать этот параметр вовсе — в этом случае утилита выполнит 35 проходов.
В актуальных версиях Mac OS инициировать безопасное удаление файлов с жесткого диска можно с помощью Дисковой утилиты (для этого необходимо нажать на кнопку «Параметры безопасности» и задать количество циклов перезаписи), либо через терминал, используя конструкцию вида. Параметр -P является специфичным для Mac OS и сообщает утилите, что удаляемые файлы необходимо трижды перезаписать.
Windows
В данном примере мы форматируем том D в файловую систему NTFS, при этом даем операционной системе команду предварительно перезаписать весь раздел нулями 10 раз, используя параметр /p («passes»), задающий количество проходов.
format d: /fs:NTFS /p:10Linux
Быстро и надежно удаляет один или несколько файлов.
shred -u -n 40 /private/file.txtВ этом примере мы перезаписали файл file.txt случайными данными 40 раз подряд (параметр -n, по умолчанию же shred совершает 25 проходов) и затем удалили его (параметр -u, поскольку по умолчанию shred не удаляет файлы, а сразу перезаписывает).
shred -u -n 40 /private/file.txt /private/file2.txtЕсли нам внужно дополнительно скрыть и сам факт «зачистки», то можете воспользоваться параметром -z:
shred -u -z -n 40 /private/file.txtЕдинственный недостаток shred — данная утилита не умеет работать с директориями. Поэтому если вам требуется уничтожить содержимое целого каталога с вложенными папками, стоит воспользоваться wipe. В данном примере мы отдали команду рекурсивно (-r) удалить все, что находится в папке private, а также отключили запрос подтверждения удаления папок и файлов (-f), которое wipe выводит по умолчанию. Среди интересных дополнительных опций, поддерживаемых утилитой, стоит выделить принудительное выполнение chmod для каталогов и файлов, защищенных от перезаписи (-c), работу в тихом режиме (-s) и возможность заставить wipe следовать символическим ссылкам (-D, конфликтует с -r).
wipe -rf /private/*Mac OS
В версиях операционной системы с 10.4 по 10.10 вы могли инициировать перезапись файлов, переместив их в корзину, а затем выбрав в Finder опцию «Очистить корзину необратимо», однако впоследствии Apple от нее отказалась. Вплоть до версии 10.11 для безопасного удаления данных можно было воспользоваться консольной командой srm. В данном примере мы рекурсивно удаляем содержимое папки private (-r), перезаписывая каждый файл случайными данными 7 раз подряд (-m). Также можно выбрать однократную перезапись файлов (-s) или же не указывать этот параметр вовсе — в этом случае утилита выполнит 35 проходов.
srm -rm /private/В актуальных версиях Mac OS инициировать безопасное удаление файлов с жесткого диска можно с помощью Дисковой утилиты (для этого необходимо нажать на кнопку «Параметры безопасности» и задать количество циклов перезаписи), либо через терминал, используя конструкцию вида. Параметр -P является специфичным для Mac OS и сообщает утилите, что удаляемые файлы необходимо трижды перезаписать.
rm -P /private/file.txt❤2🔥1
ArcherySec — open-source инструмент, который позволяет проводить сканирование инфраструктуры
ArcherySec интегрируется с 80+ коммерческими и открытыми инструментами и имеет удобный ArcherySec CLI — локально развертываемый инструмент командной строки, предназначенный для запуска на любом хосте Linux.
https://github.com/archerysec/archerysec
export TIME_ZONE='Asia/Kolkata'
git clone https://github.com/archerysec/archerysec.git
cd archerysec
NAME=User EMAIL=user@user.com PASSWORD=admin@123A bash setup.sh
./run.sh
ArcherySec интегрируется с 80+ коммерческими и открытыми инструментами и имеет удобный ArcherySec CLI — локально развертываемый инструмент командной строки, предназначенный для запуска на любом хосте Linux.
https://github.com/archerysec/archerysec
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Glasskube
Это пакетный менеджер с открытым исходным кодом для Kubernetes. Он делает развертывание, обновление и настройку пакетов в Kubernetes в 20 раз быстрее по сравнению с такими инструментами, как Helm или Kustomize. Вдохновлён простотой Homebrew и npm. Вы можете выбрать: использовать Glasskube через интерфейс (UI), командную строку (CLI) или развёртывать пакеты напрямую через GitOps.
https://github.com/glasskube/glasskube
Это пакетный менеджер с открытым исходным кодом для Kubernetes. Он делает развертывание, обновление и настройку пакетов в Kubernetes в 20 раз быстрее по сравнению с такими инструментами, как Helm или Kustomize. Вдохновлён простотой Homebrew и npm. Вы можете выбрать: использовать Glasskube через интерфейс (UI), командную строку (CLI) или развёртывать пакеты напрямую через GitOps.
https://github.com/glasskube/glasskube
❤1
Утилиты linux
rsync
Примеры:
ss
Примеры:
ps
mpstat
Показывает статистику загрузки процессора. Команды:
free
Показывает потребление ОЗУ на текущий момент:
top
Что-то наподобие диспетчера задач, только для линукс, показывает попроцессное потребление озу
dpkg
Пакетный менеджер для debian систем (не путать с системой управления пакетами — apt/apt-get)
netstat
rsync
-v — выводит подробную информацию о процессе копирования;[-a] — сохраняет все атрибуты оригинальных файлов;-u — не перезаписывать более новые файлы;-l — копирует символьные ссылки;-L — копирует содержимое ссылок;-p — сохраняет права для файлов;-t — сохраняет время модификации;-e — использовать другой транспорт, например, ssh;[-z] — cжимает файлы перед передачей;—recursive — перебирать директории рекурсивно;—exclude — Исключить файлы по шаблону;Примеры:
rsync -avz skillproject/data/ . — из подкаталога в текущий каталогrsync -avz skillproject/data/ aaa/ — из подпапки в подпапку aaa/rsync -avz skillproject/data/ digita6d@digita6d.beget.tech:/home/d/digita6d/code-skills.ru/public_html/sources/skillproject/data/ — передача на удаленный серверrsync -avze ssh skillproject/data/ digita6d@digita6d.beget.tech:/home/d/digita6d/code-skills.ru/public_html/sources/skillproject/data/ — то же самое м явным указанием sshss
-l или —listening — посмотреть только прослушиваемые порты;-p или —program — показать имя программы и ее PID;-t или —tcp — показать tcp порты;-u или —udp показать udp порты;-n или —numeric показывать ip адреса в числовом виде.Примеры:
ss -tlpn — проверить все прослушивающие tcp-портыss -tulpn | grep :80 — показать все процессы, работающие на 80-м портуps
ps -e — показать все процессыps -ef — показать подробную информацию о каждом процессеps -ef | grep phantom — найти все процессы с именем phantommpstat
Показывает статистику загрузки процессора. Команды:
mpstat — показывает общую информациюmpstat -P ALL — по каждому ядруfree
Показывает потребление ОЗУ на текущий момент:
free -h — показывает информацию в гигабайтах (более человеко читаемо, чем в байтах)top
Что-то наподобие диспетчера задач, только для линукс, показывает попроцессное потребление озу
dpkg
Пакетный менеджер для debian систем (не путать с системой управления пакетами — apt/apt-get)
dpkg -s <packname> — проверить, установлен ли пакетdpkg -l — список всех пакетовdpkg -l | grep apache2 — проверить, установлен ли конкретный пакетdpkg -i <package.deb> — установить пакетnetstat
netstat -pnltu — посмотреть список используемых портов❤1👍1
Перенос VM с Hyper-V на Proxmox
Перенос виртуальной машины (VM) с Hyper-V на Proxmox включает несколько шагов, поскольку Hyper-V и Proxmox используют разные форматы виртуальных дисков. Hyper-V использует формат VHDX, а Proxmox предпочитает формат QCOW2 или RAW. Основная задача заключается в конвертации дисков и настройке виртуальной машины на новом гипервизоре.
📌1. Подготовка виртуальной машины в Hyper-V
1. Выключите виртуальную машину в Hyper-V.
Чтобы избежать проблем с консистентностью данных, убедитесь, что VM выключена перед экспортом.
2. Экспортируйте виртуальную машину.
Откройте Hyper-V Manager и выполните экспорт виртуальной машины:
- Выберите нужную виртуальную машину.
- Нажмите "Экспортировать" и выберите директорию для сохранения экспортированных файлов.
В результате экспорт сохранит всю конфигурацию виртуальной машины и файлы дисков (обычно в формате VHD или VHDX).
📌2. Конвертация виртуального диска
Proxmox поддерживает несколько форматов виртуальных дисков, таких как
1. Перенесите диск (VHDX/VHD) на сервер Proxmox.
Скопируйте файл виртуального диска с Hyper-V на сервер Proxmox с помощью SCP или другого метода передачи файлов.
Пример использования SCP:
2. Установите `qemu-utils` (если он не установлен).
Для конвертации используйте утилиту
3. Конвертируйте VHDX в формат QCOW2 или RAW.
Выполните команду для конвертации:
- В QCOW2:
- В RAW:
-
-
📌3. Создание новой VM на Proxmox
1. Создайте новую виртуальную машину на Proxmox.
В интерфейсе Proxmox:
- Нажмите "Создать VM".
- Укажите настройки (например, процессоры, память, сетевые адаптеры), соответствующие параметрам вашей VM на Hyper-V.
- На этапе создания жесткого диска выберите небольшой размер временного диска (он не будет использоваться).
2. Подмените созданный диск на сконвертированный.
После создания VM:
- Перейдите в директорию, где хранится диск новой VM:
- Удалите временный диск и замените его на сконвертированный диск:
3. Проверьте и отредактируйте конфигурацию виртуальной машины.
Откройте файл конфигурации VM, который находится по пути
📌4. Запуск виртуальной машины
1. Запустите виртуальную машину в Proxmox.
В интерфейсе Proxmox запустите VM и проверьте, корректно ли она работает.
2. Установите необходимые драйвера.
Если в Hyper-V VM использовала специфичные драйвера, возможно, потребуется установить новые драйвера в ОС, чтобы она корректно функционировала в Proxmox (например, драйвера для сетевого адаптера или виртуальных дисков).
Заключение
После выполнения этих шагов виртуальная машина должна корректно работать на платформе Proxmox. Если возникнут проблемы с драйверами или загрузкой системы, возможно, потребуется дополнительно настроить параметры виртуальной машины или обновить конфигурацию ОС.
Перенос виртуальной машины (VM) с Hyper-V на Proxmox включает несколько шагов, поскольку Hyper-V и Proxmox используют разные форматы виртуальных дисков. Hyper-V использует формат VHDX, а Proxmox предпочитает формат QCOW2 или RAW. Основная задача заключается в конвертации дисков и настройке виртуальной машины на новом гипервизоре.
Шаги для переноса VM с Hyper-V на Proxmox📌1. Подготовка виртуальной машины в Hyper-V
1. Выключите виртуальную машину в Hyper-V.
Чтобы избежать проблем с консистентностью данных, убедитесь, что VM выключена перед экспортом.
2. Экспортируйте виртуальную машину.
Откройте Hyper-V Manager и выполните экспорт виртуальной машины:
- Выберите нужную виртуальную машину.
- Нажмите "Экспортировать" и выберите директорию для сохранения экспортированных файлов.
В результате экспорт сохранит всю конфигурацию виртуальной машины и файлы дисков (обычно в формате VHD или VHDX).
📌2. Конвертация виртуального диска
Proxmox поддерживает несколько форматов виртуальных дисков, таких как
QCOW2 и RAW. Вы можете использовать утилиту qemu-img для конвертации формата.1. Перенесите диск (VHDX/VHD) на сервер Proxmox.
Скопируйте файл виртуального диска с Hyper-V на сервер Proxmox с помощью SCP или другого метода передачи файлов.
Пример использования SCP:
scp /path/to/your/disk.vhdx user@proxmox:/var/lib/vz/images/
2. Установите `qemu-utils` (если он не установлен).
Для конвертации используйте утилиту
qemu-img. На Proxmox по умолчанию установлена эта утилита, но если её нет, установите:
apt-get install qemu-utils
3. Конвертируйте VHDX в формат QCOW2 или RAW.
Выполните команду для конвертации:
- В QCOW2:
qemu-img convert -f vhdx -O qcow2 /path/to/your/disk.vhdx /var/lib/vz/images/VMID/vm-disk.qcow2
- В RAW:
qemu-img convert -f vhdx -O raw /path/to/your/disk.vhdx /var/lib/vz/images/VMID/vm-disk.raw
-
/path/to/your/disk.vhdx — путь к вашему файлу VHDX.-
/var/lib/vz/images/VMID/vm-disk.qcow2 — путь, куда будет сохранен новый виртуальный диск, с указанием идентификатора VM (`VMID`).📌3. Создание новой VM на Proxmox
1. Создайте новую виртуальную машину на Proxmox.
В интерфейсе Proxmox:
- Нажмите "Создать VM".
- Укажите настройки (например, процессоры, память, сетевые адаптеры), соответствующие параметрам вашей VM на Hyper-V.
- На этапе создания жесткого диска выберите небольшой размер временного диска (он не будет использоваться).
2. Подмените созданный диск на сконвертированный.
После создания VM:
- Перейдите в директорию, где хранится диск новой VM:
/var/lib/vz/images/VMID/.- Удалите временный диск и замените его на сконвертированный диск:
mv /path/to/vm-disk.qcow2 /var/lib/vz/images/VMID/
3. Проверьте и отредактируйте конфигурацию виртуальной машины.
Откройте файл конфигурации VM, который находится по пути
/etc/pve/qemu-server/VMID.conf, и убедитесь, что строка с указанием диска ссылается на ваш новый файл:
scsi0: local:VMID/vm-disk.qcow2
📌4. Запуск виртуальной машины
1. Запустите виртуальную машину в Proxmox.
В интерфейсе Proxmox запустите VM и проверьте, корректно ли она работает.
2. Установите необходимые драйвера.
Если в Hyper-V VM использовала специфичные драйвера, возможно, потребуется установить новые драйвера в ОС, чтобы она корректно функционировала в Proxmox (например, драйвера для сетевого адаптера или виртуальных дисков).
Заключение
После выполнения этих шагов виртуальная машина должна корректно работать на платформе Proxmox. Если возникнут проблемы с драйверами или загрузкой системы, возможно, потребуется дополнительно настроить параметры виртуальной машины или обновить конфигурацию ОС.
❤3
This media is not supported in your browser
VIEW IN TELEGRAM
Xeol
Cканер образов контейнеров, SBOM и файловых систем на проверку пакетов на end-of-life (EOL)
https://github.com/xeol-io/xeol
Cканер образов контейнеров, SBOM и файловых систем на проверку пакетов на end-of-life (EOL)
https://github.com/xeol-io/xeol
👍2❤1
Внутреннее устройство Linux - доступно, но всерьез.
Уроки по Linux от Дмитрия Кетова для самостоятельного обучаения.
https://www.youtube.com/c/DmitryKetov/playlists
Уроки по Linux от Дмитрия Кетова для самостоятельного обучаения.
https://www.youtube.com/c/DmitryKetov/playlists
❤3
Примеры скриптов для Mikrotik
Проверка изменения IP-адреса интерфейса для Mikrotik
Иногда провайдер выдает динамические IP-адреса. Этот скрипт проверит, не изменился ли динамический IP-адрес.
Netmask
Этот скрипт полезен, если вам нужен ip-адрес без netmask (например, чтобы использовать его в брандмауэре), а "/ip address get [id] address" возвращает ip-адрес и netmask.
Резолвим имя хоста
Многие пользователи спрашивают, как использовать dns-имена вместо IP-адресов для серверов radius, правил брандмауэра и т. д.
Вот пример того, как резовлить IP-адрес сервера RADIUS.
Допустим, у нас настроен сервер radius:
А вот скрипт, который резовлит ip-адрес, сравнит ip с настроенным и заменит, если они не равны:
Добавьте этот скрипт в планировщик, чтобы он выполнялся, например, каждые 5 минут
Проверка изменения IP-адреса интерфейса для Mikrotik
Иногда провайдер выдает динамические IP-адреса. Этот скрипт проверит, не изменился ли динамический IP-адрес.
:global currentIP;
:local newIP [/ip address get [find interface="ether1"] address];
:if ($newIP != $currentIP) do={
:put "ip address $currentIP changed to $newIP";
:set currentIP $newIP;
}
Netmask
Этот скрипт полезен, если вам нужен ip-адрес без netmask (например, чтобы использовать его в брандмауэре), а "/ip address get [id] address" возвращает ip-адрес и netmask.
:global ipaddress 10.1.101.1/24
:for i from=( [:len $ipaddress] - 1) to=0 do={
:if ( [:pick $ipaddress $i] = "/") do={
:put [:pick $ipaddress 0 $i]
}
}Резолвим имя хоста
Многие пользователи спрашивают, как использовать dns-имена вместо IP-адресов для серверов radius, правил брандмауэра и т. д.
Вот пример того, как резовлить IP-адрес сервера RADIUS.
Допустим, у нас настроен сервер radius:
/radius
add address=3.4.5.6 comment=myRadА вот скрипт, который резовлит ip-адрес, сравнит ip с настроенным и заменит, если они не равны:
/system noscript add name="resolver" source= {
:local resolvedIP [:resolve "server.example.com"];
:local radiusID [/radius find comment="myRad"];
:local currentIP [/radius get $radiusID address];
:if ($resolvedIP != $currentIP) do={
/radius set $radiusID address=$resolvedIP;
/log info "radius ip updated";
}
}Добавьте этот скрипт в планировщик, чтобы он выполнялся, например, каждые 5 минут
/system scheduler add name=resolveRadiusIP on-event="resolver" interval=5m❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Winapps – проект, что позволяет запускать приложения Windows, такие как Microsoft Office в Linux (Ubuntu) и GNOME, как если бы они были частью собственной ОС, включая интеграцию с Nautilus
https://github.com/Fmstrat/winapps
https://github.com/Fmstrat/winapps
❤2👍2
Трюки терминала Bash
Полезные комбинации клавиш (хоткеи) и небольшие хитрости, которые сделают Вашу работу в Linux более эффективной.
Горячие клавиши" Bash с Ctrl
Изменить заглавные на строчные и наоборот
Запустить предыдущую команду ещё раз
Запустить команду из истории по номеру (например, 53)
Запускает последнюю команду и меняет какой-то параметр. Например, меняем
Важно: предыдущая команда заменит только первое вхождение "aaa". Если вы хотите заменить все вхождения, используйте
Запустить последнюю команду, которая начинается с...
Например, до этого в истории команд была команда cat filename:
— запускает
Указание файлов по шаблону в Bash
Полезные переменные окружения Bash
Короткие переменные:
Более длинные, но тоже полезные переменные:
Полезные комбинации клавиш (хоткеи) и небольшие хитрости, которые сделают Вашу работу в Linux более эффективной.
Горячие клавиши" Bash с Ctrl
Ctrl + n — то же самое, что и стрелка вниз.Ctrl + p — то же самое, что и стрелка вверх.Ctrl + r — поиск по предыдущим командам из истории команд (history). Продолжайте нажимать Ctrl + r, чтобы искать дальше. Ctrl + Shift + r — поиск в другую сторону.Ctrl + s — остановить вывод в терминал.Ctrl + q — восстановить вывод в терминал после Ctrl + s.Ctrl + a — перейти к началу строки (аналог клавиши Home).Ctrl + e — перейти к концу строки (аналог клавиши End).Ctrl + d — если вы ввели что-то, то Ctrl + d удаляет символ под курсором. В противном случае означает конец ввода и завершает текущую сессию Bash.Ctrl + k — удалить весь текст от курсора до конца строки.Ctrl + x + backspace — удалить весь текст от начала строки до курсора.Ctrl + t — переставить символ до курсора на символ под курсором. Нажмите Esc + t для перестановки двух слов до курсора.Ctrl + w — удалить слово до курсора; затем Ctrl + y, чтобы вставить его.Ctrl + u — удалить строку перед курсором; Ctrl + y для вставки его.Ctrl + _ — отменить ввод.Ctrl + l — очищает окно терминала. То же самое, что и clear.Ctrl + x + Ctrl + e — запускает редактор, определённый в переменной $EDITOR, для ввода команды. Полезно для многострочных команд.Изменить заглавные на строчные и наоборот
Esc + u — преобразовать буквы от курсора до конца строки в заглавные буквы.Esc + l — преобразовать буквы от курсора до конца строки в нижний регистр.Esc + c — заменить букву под курсором на заглавную.Запустить предыдущую команду ещё раз
Запустить команду из истории по номеру (например, 53)
!53!! — запуск последней команды.sudo !! — запустить предыдущую команду с sudo.Запускает последнюю команду и меняет какой-то параметр. Например, меняем
"aaa" на "bbb":
# Последняя команда: echo 'aaa'
$ ^aaa^bbb
$ echo 'bbb'
bbbВажно: предыдущая команда заменит только первое вхождение "aaa". Если вы хотите заменить все вхождения, используйте
:&:^aaa^bbb^:&
# или
!!:gs/aaa/bbb/Запустить последнюю команду, которая начинается с...
Например, до этого в истории команд была команда cat filename:
!cat
# или
!c— запускает
cat filename ещё раз.Указание файлов по шаблону в Bash
/etc/pa*wd → /etc/passwd — символ * означает "несколько любых символов"./b?n/?at → /bin/cat — символ ? означает "один любой символ".ls -l [a-z]* — вывести список файлов, содержащих только буквы латинского алфавита. В квадратных скобках [] перечисляются символы, которые будут искаться. А символ * после [] означает "хоть сколько раз".ls {*.sh,*.py} — вывести все .sh и .py файлы. {} используется для группировки нескольких шаблонов по принципу "или".Полезные переменные окружения Bash
Короткие переменные:
$0 — оболочка командной строки или путь до запускаемого файла.$1, $2, $3, ... — аргументы запуска скрипта.$# — число аргументов, переданных в скрипт из терминала.$? — код завершения последней команды.$- — текущие опции, установленные для оболочки.$$ — идентификатор текущего процесса.$! — идентификатор процесса, завершённого последним.Более длинные, но тоже полезные переменные:
$DESKTOP_SESSION — текущий менеджер дисплеев.$EDITOR — редактор текста по умолчанию.$LANG — используемый системой язык.$PATH — список директорий, в которых будут искаться исполняемые файлы.$PWD — текущая директория.$SHELL — текущая оболочка командной строки.$USER — имя текущего пользователя.$HOSTNAME — имя текущего хоста (компьютера).🙏2