Выполнение PATH через псевдоним

Я использую KDE на Centos7, поэтому могу объяснить только KDE.

(Щелкните правой кнопкой мыши на панели задач)-> Настройки диспетчера задач -> Сортировка :Вручную -> Применить

Task Manager Settings

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

0
10.02.2021, 22:09
1 ответ

В вашей оболочке хранится множество пар ключей -значений, называемых переменными среды . Ваш PATH — это всего лишь один пример одной из этих переменных среды.

Без установленной переменной PATH вам пришлось бы вручную устанавливать полный путь к каждой выполняемой программе. Например, вы не можете просто запустить date, вам нужно будет запускать /usr/bin/dateкаждый раз. И если вы позже установите пользовательскую версию Date в /usr/local/bin/, вам нужно будет запустить ее как /usr/local/bin/date.

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

Поскольку программы могут находиться в нескольких местах в системе, PATH — это не просто один каталог. Вместо этого это список каталогов, разделенных двоеточием -. Когда вы выполняете команду в своей оболочке, оболочка ищет эти каталоги, чтобы попытаться найти команду, которую вы хотите запустить.

Возвращаясь к примеру date, вы можете установить PATH=/usr/local/bin:/usr/bin, если предпочитаете отдавать приоритет пользовательским программам в /usr/local/bin, с откатом к /usr/bin, если его нет в /usr/local/bin. Затем, когда вы запустите date, оболочка увидит /usr/local/bin/в начале списка PATH, поэтому она найдет /usr/local/bin/date. Если вы удалили /usr/local/bin/date, оболочка все равно найдет /usr/bin/date, так как /usr/bin/стоит вторым в PATH.

Когда вы запускаете alias testCMD=PATH=$PATH, вы получаете псевдоним, который, вероятно, выглядит примерно так:

testCMD='PATH=.:/usr/local/bin:/usr/bin:/bin'

Поэтому, когда вы запускаете testCMD vim, оболочка видит следующее:

PATH=.:/usr/local/bin:/usr/bin:/bin vim

Это просто дает директиву one -off, сообщающую оболочке, где искать vim. Если бы вы просто запустили vimотдельно, вы бы получили тот же результат, потому что ваш псевдоним testCMD не меняет значение PATH.

Вот разница, если вы измените ПУТЬ:

$ PATH=/foo vim
bash: vim: command not found

Потому что оболочка пыталась искать в каком-то каталоге с именем /foo, но там точно не было vim.

Переходя к приведенным вами примерам, где это не работало, это потому, что вы не выполняете присваивание переменной. Между PATH=/foo vimи PATH vimесть разница. В PATH vimоболочка думает, что вы пытаетесь найти программу с именем PATH. Затем оболочка просматривает каждый каталог в $PATHв поисках программы с именем PATH. Поскольку у вас (, вероятно, )нет команды PATH ни в одном из этих каталогов, вы получите

$ PATH vim
bash: PATH: command not found

Тот же принцип сохраняется, когда перед vimставится только значение $PATH:, присваивание не происходит,поэтому оболочка считает, что $PATHдолжно быть именем какой-то программы. Вот почему вы получаете:

$ $PATH vim
bash:.:/usr/local/bin:/usr/bin:/bin: No such file or directory

В общем, вам обычно достаточно один раз установить PATH в ~/.bashrcили ~/.bash_profile. Исключение будет, если вы переключаетесь между различными наборами инструментов. На самом деле это то, для чего Python virtualenvs предназначен для автоматизации перенастройки PATH. Системы модулей среды, такие как LMod , являются еще одним мощным способом манипулирования PATH, когда это необходимо.

1
18.03.2021, 22:31

Теги

Похожие вопросы