Windows: как добавить что-либо в PATH

В этой статье мы рассмотрим особенности настройки маршрутизации и управления маршрутами в Linux (просмотр таблицы маршрутизации, добавление/удаление статических маршрутов и т.д.) на примере CentOS с помощью утилиты ip. Статья применима и для любого другого дистрибутива Linux с утилитой ip (Red Hat, Fedora и т.д.).

Добавление пути в пользовательскую переменную Path

Для добавление пути, заданного аргументом командной строки, скрипт выполняет следующие действия:

  • Считывает текущее значение переменной Path из реестра (пользовательские переменные находятся здесь HKCU\Environment\Path), основан на Чтение из реестра в скрипте WSH.
  • Проверяет, возможно, этот путь уже добавлен, в этом случае скрипт завершает свою работу.
  • Добавляет путь к значению переменной Path.
  • Сохраняет итоговое значение вызовом SETX. Почему именно через SETX, а не через сохранение значения обратно в реестр? Разница в том, что изменение, сделанное через SETX, начинает работать сразу (для новых процессов, конечно), а изменения, сохранённые через реестр, начнут работать только после выхода-входа пользователя.

Код скрипта user_path_:

var wsh_shell = («»); var path = wsh_((0)); var v = «»; try { v = wsh_(«HKCU\\Environment\\Path»); } catch ( e ) { } if ( v != «» ) { for ( var i = new Enumerator((«;»)); !(); ()) if ( () == ().toUpperCase() ) (0); if ( () != «;» ) v += «;»; } v += path; if ( wsh_(«setx Path \»» + v + «\»»,0,true) != 0 ) («setx failed.»);

Пример добавления пути к программе nhsms, установленной в профиль пользователя, из командной строки:

cscript //nologo user_path_ «%localappdata%\nhsms»

Что такое PATH система Windows?

Если вы скачали программу командной строки, например ADB (Android Debuggin Bridge), то вы не сможете запустить ее просто вписав adb в командной строке, как вы всегда поступали с системными командами Windows (IPCONFIG, NETSTAT и т.п.). Вместо этого вы должны будете указать командную строку содержащую полный путь к exe-файлу.

C:\Android\platform-tools\

Это достаточно сложно писать в командной строке без ошибок, тем более, если вам приходится делать это достаточно часто.

PATH система Windows сообщает вашей операционной системе каталоги, в которых следует искать исполняемые файлы. Например ранее упоминаемая программа расположена в каталоге C:\Windows\System32, который в свою очередь уже добавлен в PATH Windows. При вводе команды ipconfig система обыщет все папки из PATH на наличие файла и запустит его выполнение.

Если вы хотите то же удобство с программой (в нашем примере это ADB), то приложение ADB необходимо добавить в PATH Windows и после этого для запуска достаточно будет вписать в командную строку:

Читайте также:  Торговый и складской учёт

Больше ничего впечатывать не придется.

Работа с переменными в shell

В последнем примере Мефодий воспользовался подсмотренным у Гуревича приёмом: присвоил некоторое значение переменной окружения в командной строке перед именем команды. Командный интерпретатор, увидев «=» внутри первого слова командной строки, приходит к выводу, что это — операция присваивания, а не имя команды, и запоминает, как надо изменить окружение команды, которая последует после. Переменная окружения LC_TIME предписывает использовать определённый язык при выводе даты и времени а значение «C» соответствует «стандартному системному» языку (чаще всего — английскому).

Если рассматривать shell в качестве высокоуровневого языка программирования, его переменные — самые обычные строковые переменные. Записать значение в переменную можно с помощью операции присваивания, а прочесть его оттуда — с помощью операции подстановки вида $переменная:

[[email protected] methody]$ A=dit [[email protected] methody]$ C=dah [[email protected] methody]$ echo $A $B $C dit dah [[email protected] methody]$ B=» » [[email protected] methody]$ echo $A $B $C dit dah [[email protected] methody]$ echo «$A $B $C» dit dah [[email protected] methody]$ echo ‘$A $B $C’ $A $B $CПример 10. Подстановка значений переменных

Как видно из примера, значение неопределённой переменной (B) в shell считается пустым и при подстановке не выводится никаких предупреждений. Сама подстановка происходит, как и генерация имён, перед разбором командной строки, набранной пользователем. Поэтому вторая команда echo в примере получила, как и первая два параметра («dit» и «dah»), несмотря на то, что переменная B была к тому времени определена и содержала разделитель-пробел. А вот третья и четвёртая команды echo получили по одному параметру. Здесь сказалось различие между одинарными и двойными кавычками в shell: внутри двойных кавычек действует подстановка значений переменных.

Переменные, которые командный интерпретатор bash определяет после запуска, не принадлежат окружению, и, стало быть, не наследуются дочерними процессами. Чтобы переменная bash попала в окружение, её надо проэкспортировать командой export:

[[email protected] methody]$ echo «$Qwe — $LANG» — ru_ [[email protected] methody]$ Qwe=»Rty» LANG=C [[email protected] methody]$ echo «$Qwe — $LANG» Rty — C [[email protected] methody]$ sh $ echo «$Qwe — $LANG» — C $ exit [[email protected] methody]$ echo «$Qwe — $LANG» Rty — C [[email protected] methody]$ export Qwe [[email protected] methody]$ sh $ echo «$Qwe — $LANG» Rty — C $ exitПример 11. Экспорт переменных shell в окружение

Здесь Мефодий завёл новую переменную Qwe и изменил значение переменной окружения LANG, доставшейся стартовому bash от программы login. В результате запущенный дочерний процесс sh получил изменённое значение LANG и никакой переменной Qwe в окружении. После export Qwe эта переменная была добавлена в окружение и, соответственно, передалась sh.

Читайте также:  Запуск windows игр в linux через steam play

Новая переменная $PATH macOS для текущего пользователя

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

Найдите в меню Launchpad приложение «Терминал» и запустите его. Введите команду для перехода в домашний каталог:

cd $home

  • После чего приступите к редактированию файла .bash_profile:

nano ~/.bash_profile

  • Добавьте ваш путь к команде или скрипту:

PATH=$PATH:/путь_папка/к/команде

  • Сохраните изменения с помощью нескольких комбинации клавиш
    • CTRL O
    • CTRL X

Полностью закройте приложение Терминал и снова запустите его, проверьте добавилась ли ваша новая переменная в $PATH:

$PATH

Как добавить директорию в PATH

PATH — это системная переменная, содержащая список директорий, в которых ОС будет искать исполняемый файл при вызове команды из консоли.

В Windows 10 можно добраться до настройки PATH так: Этот компьютер → Свойства → Дополнительные параметры системы → Дополнительно → Переменные среды. Или вызовом «Изменение переменных среды текущего пользователя» в результатах поиска.

В окошке «Переменные среды» в блоке «Переменные среды пользователя %USERNAME%» находим строку PATH, выделяем кликом, жмем кнопку «Изменить…» и в появившемся окошке нажимаем «СОздать» для добавления ещё одного элемента. В самом элементе нужно вписать путь к папке Sublime Text (путь к файлу , который должен лежать в папке программы). В моем случае получилось так:

c:\Program Files\Sublime Text 3\

После перезапуска консоли можно наслаждаться командой subl.

Как добавить или удалить статический маршрут?

Чтобы добавить новый маршрут к определенной IP подсети в таблицу маршрутизации Linux, нужно выполнить следующую команду:

# ip route add via

Таким образом, мы добавим маршрут для IP сети через шлюз

Формат команды ip route очень похоже на синтаксис в Cisco IOS. Здесь также можно исопльзовать сокращений, например вместо ip route add можно написать ip pro ad.

Также можно добавить отдельный маршрут для одного IP адреса (хоста):

# ip route add via

Можно сделать аналог null route маршрута в Cisco (ip route null0), пакеты в такую сеть удаляются по причине No route to host:

# ip route add blackhole

Как добавить или удалить статический маршрут?

Маршруты, добавленные таким образом являются временным и будут работать до перезагрузки сетевой службы или сервера.

Чтобы удалить созданный вручную маршрут, выполните:

# ip route del

Как видите, маршрут удален из таблицы маршрутизации.

Чтобы добавить постоянный маршрут, нужно создать файл для этого маршрута, либо добавить правило в файл (выполняется при загрузке сервера).

Чтобы добавить постоянный (статический) маршрут, нужно знать имя сетевого интерфейса, который будет использоваться для маршрутизации. Узнать имя сетевого интерфейса можно командой:

Читайте также:  Как починить планшет Samsung, если он не работает?

# ip a

В моем случае, интерфейс enp0s3.

Более подробная статья о настройке сетевых интерфейсов в CentOS.

Далее открываем следующий файл:

# nano /etc/sysconfig/network-scripts/route-enp0s3

И добавляем туда строку с маршрутом:

via

После добавления маршрута в файл нужно перезапустить сервис network:

# service network restart

Как добавить или удалить статический маршрут?

После перещаауска сетевого сервиса, в таблице маршрутизации появился статический маршрут.

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

# nano /etc/

И укажите команду добавления маршрута:

# ip route add via

Теперь, если ваш сервер будет перезагружен, маршрут пропишется автоматически при загрузке системы.

Просмотр содержимого файла

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

# grep: фильтрация по строкам grep 455 # вывести строку, где есть 455 # cut: отображение столбцов cut -f 3 # вывести только третий столбец cut -f 2-3 # вывести 2-ой и 3-ий столбец cut -c 9-19 # вывести от 9-ти до 19-ти символов каждой строки cut -f 1 -d ‘;’ # в файле использовать ‘;’ в качестве разделителя вместо tab # awk: то же, что и cut, но имеет ещё больше разделителей, фильтров и он более сложный в вычислении awk ‘{print $3}’ # вывести 3-ий столбец awk ‘{print $2 «, » $3}’ # вывести 2-ой и 3-ий столбец, и разделить запятой awk ‘{print $2 + $3}’ # вывести сумму 2-го и 3-го столбца awk ‘length($0) > 20’ # вывести все строки длиннее 20 символов awk ‘$2 > 100′ # вывести строки, в которых значение второго столбца больше 100 # wc wc # вывести количество строк, слов и символов в текстовом файле ls -1 | wc # вывести количество строк, слов и символов каждого файла в текущем каталоге # sort: сортировка строк по алфавиту sort # сортировка строк файла sort -r # сортировка в обратном порядке sort -R # сортировка в случайном порядке sort -t $’\t’ -k 3n,3 # сортировать строки по числовому значению третьего столбца # uniq: отображает неповторяющиеся и повторяющиеся строки файла uniq # опускает повторяющиеся строки uniq -d # выводит только повторяющиеся строки uniq -u # выводит только те строки, у которых нет повторов uniq -c # выводит количество повторов для каждой строки

Надеюсь вам понравится эта шпаргалка!

  • Как писать Bash-однострочники для клонирования и управления GitHub/GitLab репозиториями
  • Автоматизированное семантическое управление версиями с помощью GitVersion
  • Основы Git за 5 минут

Читайте нас в Telegram, VK и

Перевод статьи Guillermo Barreiro: The Essential Bash Cheat Sheet