GNU/Linux >> Znalost Linux >  >> Linux

Vytvoření programu v přihrádce

Existují dva způsoby, jak vám umožnit spouštět binární soubor bez zadání jeho cesty (nezahrnuje vytváření aliasů nebo funkcí shellu, které jej spouštějí s absolutní cestou pro vás):

  1. Zkopírujte jej do adresáře, který je ve vašem $PATH .
  2. Přidejte adresář, kde se nachází, do $PATH .

Chcete-li zkopírovat soubor do adresáře ve vaší cestě, například /usr/local/bin (kam by měl být lokálně spravovaný software), musíte mít oprávnění superuživatele, což obvykle znamená použití sudo :

$ sudo cp -i mybinary /usr/local/bin

Je třeba dávat pozor, aby se nepřepsaly žádné existující soubory v cílovém adresáři (proto jsem přidal -i zde).

Chcete-li přidat adresář do vašeho $PATH , přidejte řádek do ~/.bashrc soubor (pokud používáte bash ):

PATH="$HOME/bin:$PATH"

... pokud je binární kód v $HOME/bin .

To má tu výhodu, že nemusíte mít práva superuživatele ani nic měnit/přidávat v základním systému na vašem počítači. Stačí přesunout binární soubor do bin adresář vašeho domovského adresáře.

Poznámka, změny na .bashrc projeví se při příštím získání souboru, což se stane, když otevřete nový terminál nebo se odhlásíte a znovu přihlásíte nebo spustíte source ~/.bashrc ručně.


Měli byste si přečíst více o proměnné PATH. Pevně ​​se domnívám, že byste jej měli vhodně používat (nebo změnit).

Chci mít možnost vložit jej do adresáře bin

Asi máte na mysli /bin/ nebo /usr/bin/ . Nejsem si jistý, zda je moudré tam přidávat své vlastní programy. Možná by bylo lepší do nich vložit symbolický odkaz (např. pomocí něčeho jako ln -sv $(realpath foobar.out) /usr/bin/ ), pokud bezpodmínečně chcete, aby se tam váš program objevil (což je IMHO pravděpodobně chyba, protože si zahráváte se správcem balíčků vaší distribuce).

Pravděpodobně instalujete váš program v /usr/local/bin/ je mnohem moudřejší (ponechat obě /bin/ a /usr/bin/ nedotčené, jak je poskytuje a spravuje vaše distribuce Linuxu). Podívejte se na LSB a přečtěte si více o standardu File Hierarchy.

... jako příkazy pro celý systém, např. .... cd

Toto je z vaší strany silně mylná představa (v původní variantě vaší otázky jste správně odstranili cd později). cd není a nemůže být spustitelný soubor, je to (a musí být) vestavěný příkaz vašeho shellu.

Možná si budete chtít přečíst volně stažitelný Pokročilé programování Linuxu abyste pochopili proč cd nemůže být spustitelný soubor (aktuální pracovní adresář je součástí stavu každého procesu a každý proces má svůj vlastní a mohl by jej změnit pomocí chdir(2)...)


install /path/to/oobar.out /usr/local/bin/

Linux
  1. Vytvoření nového adresáře v C

  2. Určete, zda je relativní nebo absolutní cesta v programu Shell

  3. file_put_contents nevytváří soubor txt

  1. Přidejte bash skript do cesty

  2. Proč Bash nedává žádný takový soubor nebo adresář pro program, který je v mé PATH?

  3. Jak přidám podadresář bin prvního adresáře v GOPATH do PATH?

  1. Vytváření, mazání a správa adresářů v systému Linux

  2. Python – Jak /usr/bin/env ví, který program použít?

  3. CD do neznámého adresáře na známé cestě?