Путь поиска - это список каталогов, в которых операционная система сканирует программы. Его цель - предоставить быстрый доступ к общим программам и системным утилитам без необходимости вводить полный путь или переходить в правильный каталог для запуска приложения.
Вернувшись в дни текстового режима, путь поиска был чрезвычайно полезным. Так и остается сегодня в окне терминала: каталоги, полные распространенных программ, перечислены в пути. Когда вы вводите команду, операционная система ищет в каждом каталоге пути соответствующий файл программы.
Существуют различные методы для отображения пути поиска, но вы можете написать быструю утилиту на 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 Кен Томпсон, Брайан Керниган и Деннис Ритчи. Я надеюсь, что вы тоже