Найти тему
Легко в’IT

Откуда берутся команды?

#Технологии #ОС #Компьютер #Команды

Вот наверняка приходилось гуглить какую-нибудь проблему и в ответе видеть что-то вроде

echo %USERNAME%

И у тебя наверняка есть два вопроса откуда взялась команда echo и что же такое за юзернейм в символах процентов? А что, если я скажу, что эти обе темы неразрывно связаны друг с другом? Нет, не echo с %USERNAME%, а в принципе обе сущности, написанные выше и чтобы понять, откуда берется первая часть, нам нужно понять, что за такое вторая часть команды.

Итак, я думаю, тебе уже доводилось так или иначе программировать, поэтому понятие переменной, как некой ячейки памяти, хранящей то или иное значение, тебе знакомо. Так вот, в операционной системе, не важно, Windows это, Linux, Mac OS или React OS (кстати, интересная штука, надо будет ее рассмотреть отдельно), ты можешь дополнять систему своими собственными переменными, чтобы потом использовать их между различными программами или скриптами в командной строке. И чтобы интерпретатор команд мог различать переменную %USERNAME% и простой текст USERNAME, имена переменной при их вызове пишутся с какими-нибудь разделителями: в винде это два значка процента, в Linux, Mac OS и прочих UNIX-подобных системах, это значок доллара в начале, то есть $USERNAME. Такие переменные называются переменными окружения. И как один из вариантов их применения - ты можешь данные из одной программы передать в другую, работающие параллельно. Да, я знаю про пайпы, сокеты и так далее, но почему бы и нет? Это едва ли не самый "дешевый" для ресурсов способ передачи данных.

Я немного отвлекся, давай вернемся к нашей теме. Так вот, как же связана тема переменных окружения с командой, которая написана перед ней? А связь здесь такая: в наших с тобой операционках есть такая переменная окружения под названием %PATH% или $PATH. Например, у меня на маке она выглядит так

/Library/Frameworks/Python.framework/Versions/3.11/bin /usr/local/bin /usr/bin /bin /usr/sbin /sbin

На винде она будет выглядеть немного иначе, но в обеих системах она будет содержать список директорий, которые содержат исполняемые файлы этих самых команд (поищи в винде их в папке C:\Windows\system32), например та же команда echo, которая выводит либо просто текст, либо если видит переменную окружения - ее значение. В нашем случае - в Windows, открыв командную строку (клавиши Win+R и ввести сmd) и введя команду echo %USERNAME%, ты увидишь имя пользователя.

В принципе, если директория не перечислена в переменной PATH, то ты можешь вывзвать с тем же успехом команду напрямую: C:\Windows\system32\echo.exe для винды и /bin/echo для Linux Вот и вся "магия". Я прошу прощения за занудную большую статью и если ты это знаешь - молодец. Она нам нужна, чтобы примерно синхронизировать начальный уровень для всех читателей.