GNU/Linux >> Znalost Linux >  >> Linux

Proměnné prostředí v symbolických odkazech

I když jsou symbolické odkazy vyřešeny jádrem, stále můžete udělat trik LD_PRELOAD, zabalit všechny funkce knihovny libc, které přebírají názvy cest a rozšířit jakékoli $XYZ komponenty v řetězci vráceném 'readlink' (rozšíření parametrů). Poté vložte rozšířenou cestu do zabalené funkce. Při vytváření odkazu musíte uniknout z cílové cesty z expanze shellu, jak navrhuje jaztik.

Protože injektovaná knihovna má plný přístup do uživatelského prostředí, splní to všechna očekávání OP.


Ano. žádný problém. ve skutečnosti nebudete ve svém odkazu používat proměnnou $HOME, takže například nebude fungovat s chytrými řešeními pro skupiny uživatelů. Proměnná je přeložena shellem při provádění příkazu a obsah proměnné je použit v odkazu.

ln -s ~/test /tmp/test 

je rozšířena na

/<path>/<to>/home/test -> /tmp/test

Ah a fungovat budou pouze proměnné prostředí osoby, která volá ln. V odkazu nemůžete ukládat proměnné prostředí jiných lidí. Před voláním příkazu se proměnné rozbalí.


Pokud nechcete proměnnou v odkazu rozšiřovat, můžete ji umístit do jednoduchých uvozovek,

ln -s '$HOME/file/or/folder' newname

To by dalo,

newname -> $HOME/file/or/folder

místo toho, aby se rozšířil do vaší lokálně nastavené $HOME. Jak je popsáno v jiných odpovědích, vůbec to nerozšíří. Můžete tedy např. použijte jej k symbolickému odkazu na soubor v doslovném $HOME složka.

[Upozorňujeme, že toto je závislé na systému – ne všechny systémy podporují variantní symbolické odkazy]


Symbolické odkazy zpracovává jádro a jádro se nestará o proměnné prostředí. Takže ne.


Linux
  1. Nastavit dočasné prostředí ($PATH)

  2. Jak zrušit nastavení mnoha proměnných prostředí

  3. Jak číst proměnné prostředí procesu

  1. Jak vytvořit pevné a symbolické odkazy v Linuxu

  2. Odkazování na proměnné prostředí *v* /etc/environment?

  3. Kontrola proměnných prostředí

  1. Chování cd/bash na symbolických odkazech

  2. Jak zkopírovat symbolické odkazy?

  3. Nastavení proměnných prostředí Linuxu