Путь поиска - это список каталогов, в которых операционная система сканирует программы. Его цель - предоставить быстрый доступ к общим программам и системным утилитам без необходимости вводить полный путь или переходить в правильный каталог для запуска приложения.

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

Существуют различные методы для отображения пути поиска, но вы можете написать быструю утилиту на C, которая отображает каждый каталог в строке отдельно. Для этого вы должны изучить системную среду и найти переменную PATH. Я продемонстрировал такую ​​программу в своем блоге 2013 года об окружающей среде:

#include <stdio.h>
#include <stdlib.h>

int main ()
{
    char * searchpath;

    searchpath = getenv ("PATH");
    printf («Путь поиска:«% s »\ n», путь поиска);
    Возвращение (0);
}

С помощью всего лишь нескольких модификаций вы можете выгрузить список каталогов, просматривая возвращаемую строку ( searchpath) и заменяя символ разделителя пути новой строкой .

В Windows символ разделителя пути - ;точка с запятой.

Для Unix символ разделителя пути - :двоеточие.

Вот код:

#include <stdio.h>
#include <stdlib.h>

#define SEPARATOR ';'
#define SEPARATOR ':'

int main ()
{
    char * searchpath, * s;

    searchpath = getenv ("PATH");
    s = путь поиска;

    в то время как (* с)
    {
        если (* s == СЕПАРАТОР)
            putchar ( '\ п');
        еще
            putchar (* с);
        s ++;
    }
    putchar ( '\ п');

    Возвращение (0);
}

Закомментируйте строки 4 или 5, в зависимости от ОС.

Символьный указатель sинициализируется на основе строки, возвращаемой в строке 12.

В то время как петля на линии 14 шагов через строку из одного символа в то время. Если символ соответствует SEPARATOR, выводится новая строка. В противном случае найденный символ выводится.

Строка 20 увеличивает переменную sдля продолжения перемещения по строке.

Вот пример вывода с моего Mac:

/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
/Users/dang/bin

В Windows список намного длиннее. В Windows (со времен MS-DOS) существует традиция складывать каталоги в пути для каждой установленной программы. Некоторым приложениям становится лучше избегать этой шумной традиции, но вы все равно найдете множество, которые настаивают на создании собственных каталогов.

В пути моего Mac вы видите каталог /Users/dang/bin. В этот каталог я помещаю все свои утилиты командной строки, большинство из которых написаны на C, но с некоторыми из них в сценарии оболочки Bash, а некоторые - в Perl. Наличие этого личного binкаталога позволяет мне использовать мои утилиты в любом каталоге, когда я работаю в окне терминала - что довольно часто. Я нахожу язык C довольно практичным для написания таких коротких полезных утилит командной строки, как это делали титаны Unix Кен Томпсон, Брайан Керниган и Деннис Ритчи. Я надеюсь, что вы тоже