Како користити команду вхицх на Линуку

Линук наредба која идентификује извршну бинарну датотеку која се покреће када издате команду љусци. Ако имате различите верзије истог програма на свом рачунару, можете користити коју да бисте сазнали коју ће шкољка користити.

Бинарне датотеке и путање

Када покушате да покренете програм или команду из прозора терминала, љуска (обично, Басх на савременим дистрибуцијама) мора да пронађе ту команду и покрене је. Неке команде, као нпр цд, историје, и пвд, уграђени су у шкољку, тако да Басх не мора превише да ради да би их пронашао.

Али како Басх лоцира друге команде, програме и спољне самосталне бинарне датотеке? Па, Басх користи путању, која је заправо колекција путања, од којих свака указује на директоријум. Затим у сваком од тих директоријума тражи извршни фајл који одговара команди или програму који покушавате да покренете. Када га пронађе, Басх га покреће и одустаје од претраге.

Можете користити ецхо да проверите променљиву окружења $ПАТХ и видите директоријуме на вашој путањи. Да бисте то урадили, откуцајте следеће, а затим притисните Ентер:

echo $PATH

Тхе

Излазна листа раздваја сваку путању двотачкама (:). На рачунару који користимо, Басх ће претраживати следеће директоријуме овим редоследом:

/уср/лоцал/сбин
/уср/лоцал/бин
/уср/сбин
/уср/бин
/сбин
/бин
/корисник/игре
/уср/лоцал/гамес
/снап/бин

Постоји много фасцикли које се зову /сбин и /бин у систему датотека, што може довести до неке забуне.

  Топ 11 личних заштитних зидова за рачунаре и мобилне телефоне

Гледајте Те стазе

Рецимо да имамо ажурирану верзију програма под називом хтг. Налази се у нашем тренутном директоријуму и можемо га покренути уписивањем следеће команде:

./хтг

Тхе

Није баш неки програм — само штампа број верзије, а затим се затвара. Нова верзија је 1.2.138.

Да бисте покренули програм у тренутном радном директоријуму, морате укуцати „./” испред назива програма, тако да Басх зна где да га пронађе.

Пошто желимо да покренемо овај одређени програм из било ког директоријума, преместићемо извршни фајл у /уср/бин директоријум. Басх ће пронаћи тај програм на путањи и покренути га за нас.

Не треба нам извршни фајл у нашем тренутном директоријуму, нити треба да укуцамо „./” испред назива програма, као што је приказано у наставку:

sudo mv htg /usr/bin

Тхе

Сада, хајде да покушамо да покренемо програм тако што ћемо откуцати:

htg

Тхе

Нешто ради, али то није наш нови, ажурирани програм. Уместо тога, то је старија верзија, 1.2.105.

Која команда

Питање које смо горе демонстрирали је зашто команда која је дизајниран.

У овом примеру, користићемо који и проследити име програма који истражујемо као параметар командне линије:

which htg

Тхе

који извештава да је пронашао верзију хтг-а у директоријуму /уср/лоцал/бин. Пошто се та локација појављује на путањи пре директоријума у ​​који смо преместили ажурирани хтг, Басх користи ту ранију верзију програма.

Међутим, ако користимо опцију -а (све) као што је приказано у наставку, која наставља да тражи чак и ако пронађе подударање:

which -a htg

Тхе

Затим наводи сва подударања у било ком од директоријума на путањи.

  Салесфорце лансира АИ Цлоуд, Хипер за виртуелне јутјубере и креаторе садржаја аватара, а Блинк најављује АИ Цопилот за аутоматизацију –

Дакле, то је проблем — постоји ранија верзија програма у директоријуму који је такође у закрпи. И тај директоријум се тражи пре директоријума у ​​који смо спустили нову верзију програма.

Да бисмо проверили, можемо да откуцамо следеће и експлицитно покренемо сваку верзију програма:

/usr/local/bin/htg
/usr/bin/htg

Ово објашњава проблем, а решење је једноставно.

У ствари, имамо опције. Можемо или да избришемо стару верзију у директоријуму /усе/лоцал/бин или да је преместимо из /уср/бин у /уср/лоцал/бин.

Погледајте те резултате

Два резултата не значе нужно две бинарне датотеке.

Погледајмо пример у којем ћемо користити команду вхо са опцијом -а (алл) и потражити верзије програма лесс:

which -a less

Тхе

који извештава о две локације на којима се налази верзија мањег програма, али да ли је то тачно? Било би чудно имати две различите верзије (или исту верзију на више локација) мање инсталиране на Линук рачунару. Дакле, нећемо прихватити излаз из којег. Уместо тога, хајде да копамо мало дубље.

Можемо користити опције лс, -л (дуга листа) и -х (читљиво) да видимо шта се дешава:

ls -lh /usr/bin/less

Тхе

Величина датотеке је пријављена као девет бајтова! То дефинитивно није потпуна копија мањег.

Први знак листе је „л“. Нормална датотека би имала цртицу (-) као први знак. „л“ је симбол који означава симболичку везу. Ако сте пропустили тај детаљ, симбол –> такође означава да је ово а симболичка веза, што можете замислити као неку врсту пречице. Овај указује на копију мање у /бин.

Покушајмо поново са верзијом мање у /бин:

ls -lh /bin/less

Тхе

Овај унос је очигледно „права“ бинарна извршна датотека. Први знак листе је цртица (-), што значи да је обична датотека, а величина датотеке је 167 КБ. Дакле, инсталирана је само једна копија мање, али постоји симболичка веза до ње из другог директоријума, коју Басх такође проналази када претражује путању.

  Шта је то и како га оптимизовати?

Провера више команди одједном

Можете проследити више програма и команди којима, а он ће их проверити по реду.

На пример, ако откуцате:

which ping cat uptime date head

Тхе

који ради кроз листу програма и команди које сте му доставили и наводи резултате за сваки од њих.

Који је који?

Ако сте толико склони, можете и да употребите то за себе тако што ћете откуцати следеће:

which which

Осим што се из радозналости чачкате по Линук систему датотека, што је најкорисније када очекујете један скуп понашања од команде или програма, а добијете други.

Можете користити који у овим случајевима да бисте проверили да је команда коју Басх покреће она коју желите да користите.