
De Linux die opdracht geeft de uitvoerbare, binaire dat wordt gestart wanneer u een commando naar de shell. Als u verschillende versies van hetzelfde programma op uw computer, kunt u die uit de shell gebruiken.
Binaire bestanden en Paden
Wanneer u probeert een programma of opdracht uit in de terminal-venster, de shell (meestal Bash op moderne distributies) te vinden die opdracht en start het op. Sommige commando ‘ s, zoals cd, geschiedenis, en pwd, zijn gebouwd in de schil, dus Bash hoeft niet te hard te werken om het te vinden.
Maar hoe werkt Bash zoeken naar andere commando ‘s, programma’ s, en externe stand-alone binaries? Goed, Bash maakt gebruik van het pad, dat is eigenlijk een verzameling van paden, elk van die verwijst naar een map. Het zoekt dan in elk van deze mappen voor een uitvoerbaar bestand dat overeenkomt met de opdracht of het programma dat u probeert uit te voeren. Wanneer deze wordt gevonden, Bash gestart en ziet af van het zoeken.
U kunt gebruik maken van echo om te controleren of de $PATH omgevingsvariabele en zie de folders in je pad. Om dit te doen, type het volgende en druk op Enter:
echo $PATH
De output lijst scheidt u elk pad met een dubbele punt (:). Op de computer die we gebruiken, Bash zal zoeken in de volgende mappen in deze volgorde:
- /usr/local/sbin
- /usr/local/bin
- /usr/sbin
- /usr/bin
- /sbin
- /bin
- /user/games
- /usr/local/games
- /snap/bin
Er zijn vele mappen met de naam /sbin en /bin in het bestandssysteem, wat kan leiden tot enige verwarring.
Let Op De Paden
Laten we zeggen we hebben een bijgewerkte versie van een programma genaamd htg. Het is in onze huidige map, en we kunnen het met de volgende opdracht te typen:
./htg
Het is niet echt een programma, maar drukt het nummer van de versie, en vervolgens afgesloten. De nieuwe versie is 1.2.138.
Voor het uitvoeren van een programma in de huidige werkmap, moet u het type “./” in de voorkant van de naam van het programma, dus Bash weet waar het te vinden.
Omdat we willen dat het uitvoeren van dit programma uit een map, we gaan het uitvoerbare bestand in de /usr/bin directory. Bash vindt dat het programma in het pad en het voor ons op.
We hoeven niet het uitvoerbare bestand in de huidige directory, noch hebben we nodig om te typen “./” in de voorkant van de naam van het programma, zoals hieronder weergegeven:
sudo mv htg /usr/bin
Nu, laten we proberen om het programma door te typen:
htg
Iets loopt, maar het is niet onze nieuwe, bijgewerkte programma. Integendeel, het is de oudere versie, 1.2.105.
De Opdracht die
Het probleem dat we hierboven aangetoond is waarom het die opdracht werd ontworpen.
In dit voorbeeld gebruiken we die en doorgeven van de naam van het programma dat we aan het onderzoeken als een command-line parameter:
die htg
dat meldt het is een versie van htg in de /usr/local/bin directory. Omdat die locatie wordt weergegeven in het pad voor de map waarin verhuisden we naar de bijgewerkte htg, Bash gebruikt die een eerdere versie van het programma.
Echter, als we gebruik dan de-a (alle) optie zoals getoond hieronder, die blijft zoeken, zelfs als er een overeenkomst wordt gevonden:
die-een htg
Het geeft een overzicht van alle wedstrijden in een van de mappen in het pad.
Zo, dat is het probleem—er is een eerdere versie van het programma in een map die ook in de patch. En die map wordt gezocht voor de directory waarin we lieten de nieuwe versie van het programma.
Om het te controleren, kunnen we het volgende te typen en expliciet uitvoeren van elke versie van het programma:
/usr/local/bin/htg
/usr/bin/htg
Dit verklaart het probleem, en de oplossing is simpel.
Eigenlijk hebben we mogelijkheden. We kunnen verwijderen van de oude versie in de /gebruik/local/bin directory of verplaatsen van /usr/bin /usr/local/bin.
Bekijk De Resultaten
De twee resultaten niet noodzakelijkerwijs twee binaire bestanden.
Laten we eens kijken naar een voorbeeld waarbij we gebruik maken van het commando met de-a (alle) optie en zoek versies van de minder programma:
die een minder
de rapporten die de twee locaties die het huis van een versie van de minder-programma, maar is dat wel zo? Het zou vreemd zijn om twee verschillende versies (of dezelfde versie op meerdere locaties) van minder geïnstalleerd op een Linux-computer. Dus, we gaan niet te accepteren vanaf welke uitgang. In plaats daarvan, laten we een beetje dieper graven.
We kunnen gebruik maken van de ls-l (lange lijst), en -h (human-readable) opties om te zien wat er aan de hand:
ls -lh /usr/bin/less
De grootte van het bestand is gerapporteerd als negen bytes! Dat is zeker niet een volledige kopie van minder.
Het eerste teken van de lijst is een “l.” Een normale foto zal dan een koppelteken (-) als het eerste teken. De “l” is een symbool dat betekent dat de symbolische link. Als u die gemist detail, de –> symbool geeft ook aan dat dit een symbolische link, die u kunt beschouwen als een soort van snelkoppeling. Deze punten naar de kopie van minder in /bin.
Laten we het opnieuw proberen met de versie van de minder in /bin:
ls -lh /bin/less
Dit bericht is natuurlijk een “echte” binaire, uitvoerbare. Het eerste teken van de lijst is een koppelteken (-), wat betekent dat het een regulier bestand is, en de grootte van het bestand is 167 KB. Dus, slechts één exemplaar van minder is geïnstalleerd, maar er is een symbolische link naar een andere map, die Bash ook vindt bij het zoeken van de weg.
GERELATEERD: Hoe Gebruik je het ls Commando uit om een Lijst van Bestanden en Mappen op Linux
Het controleren van Meerdere Commando ‘ s tegelijk
U kunt meerdere programma ‘s en commando’ s die, en het zal controleren of ze in orde is.
Bijvoorbeeld, als u typt:
die ping kat uptime-date hoofd
dat werkt door in de lijst van programma ‘s en commando’ s die u verstrekt met en lijsten het resultaat van elk één.
Welke is dat?
Als u zo geneigd bent, kunt u ook gebruik maken van die op zich door het volgende te typen:
die
Naast rondneuzen de Linux file system uit nieuwsgierigheid, die is het meest nuttig wanneer u verwacht een set van gedragingen van een opdracht of een programma, maar krijgen een andere.
U kunt gebruik dat in deze gevallen om te controleren of de opdracht Bash is de lancering is de account die u wilt gebruiken.
LEES VERDER
- “Het Instellen van een Wachtwoord, de Vervaldatum in Windows 10
- “Het Aanpassen van Windows 10 Nieuws App
- “Hoe Krijg ik de Grootte van een Bestand of Map in Linux
- “Pas Op Voor Deze 7 Facebook Oplichting
- “How-To Geek Is op Zoek naar een Externe Full-Time copywriter Technologie