it-swarm-eu.dev

Jak mohu udělat program spustitelný odkudkoli

Co mám dělat, když chci mít možnost spustit daný program bez ohledu na můj aktuální adresář? Měl bych vytvořit symbolický odkaz na program v /bin složka?

79
aneuryzm

Pokud zadáte export PATH=$PATH:</path/to/file> na příkazovém řádku bude trvat pouze po dobu relace.

Pokud ji chcete trvale změnit, přidejte export PATH=$PATH:</path/to/file> do vašeho ~/.bashrc souboru (na konci je v pořádku).

55
oadams

Krátká odpověď je, že ke spuštění programu, bez ohledu na to, jaký je váš adresář, musíte mít adresář programu ve své vyhledávací cestě. Problém lze vyřešit vložením programu do složky, která je již na této cestě, nebo přidáním nové složky na cestu - buď bude fungovat. Nejlepší odpověď závisí na:

Je tento program stažený program, který jste si zkompilovali ze zdroje?

Je docela pravděpodobné, že již bude mít mechanismus instalace. Ve složce, kterou jste kompilovali program, jako root, spusťte příkaz 'make install'

Je tento program staženým programem, který chcete zpřístupnit jako součást standardních programů v počítači?

Dává smysl umístit tento druh aplikace do standardní složky. pro tyto programy je docela běžné používat adresáře jako/usr/local/bin. K tomu budete potřebovat přístup root.

Jedná se o program, který jste napsali pro sebe a/nebo nemáte v počítači žádné zvláštní potíže.

Vytvoření složky ve vašem domovském adresáři nazvané 'bin' a umístění programu tam. Možná budete muset upravit přihlašovací skript, abyste do této složky přidali úplnou cestu (např./Usr/home/jeremy/bin)

I když byste mohli do vyhledávací cesty přidat pouze svůj aktuální adresář, budete to muset dělat s každým novým programem - a v dlouhodobějším horizontu je práce více.

24
Michael Shaw

Umístění odkazu na soubor v adresáři /bin Není nejlepší z několika důvodů.

  • Pokud je skutečný spustitelný soubor na místě, které někteří uživatelé nevidí ani nespouští, vidí jej jako špatný odkaz nebo nefunkční program.
  • Adresář /bin By měl být vyhrazen pro programy, které jsou potřebné pro spuštění systému (například chmod, mkdir atd.).

Spustitelný soubor můžete skutečně umístit (nainstalovat) do /usr/bin/ Nebo dokonce /usr/local/bin/. V tomto okamžiku jste samozřejmě nainstalovali program ručně; vaše distribuce to nebude sledovat tak, jak to dělá zbytek vašich programů - budete je muset ručně upgradovat, když je to nutné, a ručně ji odstranit, pokud chcete. Také budete muset vědět, na jakých balíčcích to záleží (zní to, jako kdybyste už program používali, takže se o to postará, ale obecně ...).

Pokud nebudu nastavovat program, který očekávám od ostatních uživatelů, není to, co obvykle dělám: Vytvářím adresář bin jen pro mě v domovském adresáři a upravím svůj profil Shell tak, aby přidal ~/bin/ do mé proměnné prostředí PATH. Je pro mě snazší sledovat programy, které jsem nainstaloval tímto způsobem, protože je odděleno od zbytku systému.

17
Shawn J. Goff

Pokud chcete spustit příkaz foo v adresáři, ve kterém se Shell nachází, máte v zásadě dvě možnosti:

  1. Zadejte ./foo na Shell Prompt.

  2. Přidat . adresář (. je název pro „aktuální adresář“) k proměnné prostředí PATH; jak to děláte, záleží na Shell, který používáte:

    • pro shelly typu Bourne (bash, zsh, ksh atd.) píšete (další informace viz tato stránka ):

      export PATH=$PATH:.
      
    • pro shelly typu csh (tcsh, csh), které píšete (další informace viz tato stránka ):

      set path = ( $path .)
      

Uvědomte si, že 2. je bezpečnostní riziko u víceuživatelských systémů: představte si, že cd do adresáře /tmp a uživatel se zlými úmysly tam vytvořil binární malware obsahující ls.

6
Riccardo Murri

Zprávy s programem PATH vás omylem otevřou pro spuštění škodlivých programů. Standardem je instalace „místních“ věcí pod /usr/local (Viz FHS , které kodifikuje použití Unixu: trochu datované, ale dává to zdůvodnění). , /usr/local/bin Je obvykle v PATH pro všechny uživatele.

Moje „lokálně nainstalované“ programy jsou v $HOME/bin, Nastaveny ve standardním tanci podle ./configure --prefix=$HOME ..., Spojené s několika (bash) aliasy pro výběr např. self-postavený git přes systém jeden (non-srážet se nalézají v PATH na samém konci.

1
vonbrand