GNU/Linux >> Znalost Linux >  >> Linux

Jak čistě přidat do $path?

Chtěl bych způsob, jak přidat věci do $PATH, v rámci celého systému nebo pro jednotlivé uživatele, aniž bych potenciálně přidával stejnou cestu několikrát.

Jedním z důvodů, proč to chtít udělat, je to, aby bylo možné provádět doplňky v .bashrc , který nevyžaduje přihlášení a je také užitečnější v systémech, které používají (např.) lightdm , který nikdy nevolá .profile .

Jsem si vědom otázek týkajících se čištění duplikátů z $PATH, ale nechci duplikáty odstraňovat . Chtěl bych způsob, jak přidat cesty, pouze pokud ještě nejsou přítomny.

Přijatá odpověď:

Předpokládejme, že nová cesta, kterou chceme přidat, je:

new=/opt/bin

Potom pomocí libovolného shellu POSIX můžeme otestovat, zda je new je již v cestě a pokud není, přidejte jej:

case ":${PATH:=$new}:" in
    *:"$new":*)  ;;
    *) PATH="$new:$PATH"  ;;
esac

Všimněte si použití dvojteček. Bez dvojteček bychom si mohli myslet, že například new=/bin byl již v cestě, protože se shodoval se vzorem v /usr/bin . Zatímco PATH mají normálně mnoho prvků, speciální případy nula a jednoho prvku v PATH jsou také zpracovány. Případ, kdy PATH zpočátku nemá žádné prvky (je prázdný), je řešen pomocí ${PATH:=$new} který přiřadí PATH na $new pokud je prázdný. Nastavení výchozích hodnot parametrů tímto způsobem je funkcí všech shellů POSIX:viz sekce 2.6.2 dokumentů POSIX.)

Volatelná funkce

Pro pohodlí lze výše uvedený kód vložit do funkce. Tuto funkci lze definovat na příkazovém řádku nebo, aby byla trvale dostupná, vložit do inicializačního skriptu vašeho shellu (pro uživatele bash by to bylo ~/.bashrc ):

pupdate() { case ":${PATH:=$1}:" in *:"$1":*) ;; *) PATH="$1:$PATH" ;; esac; }

Chcete-li použít tuto funkci aktualizace cesty k přidání adresáře k aktuální PATH:

pupdate /new/path

Linux
  1. Jak bych mohl přidat dir do $PATH v Makefile?

  2. Jak přidat soubor .so do java.library.path v Linuxu

  3. Jak přidat Chromedriver do PATH v linuxu?

  1. Jak přidat adresář do PATH v Linuxu [s příklady]

  2. Jak přidat úložiště Yum

  3. ldd nenajde cestu, Jak přidat

  1. Jak přidat více hostitelů v phpMyAdmin

  2. Jak přidat uživatele do skupiny v Linuxu

  3. Linux – Ldd nenajde cestu, jak přidat?