Dráždi ma to. Videl som niekoľko návrhov (všetky používajú rôzne súbory a syntax) a žiadny z nich nefungoval.
Ako môžem nastaviť premennú prostredia pre konkrétneho používateľa? Som na debiane squeeze. Aká je presná syntax, ktorú mám uviesť v súbore, aby ABC = "123"?
Túto deklaráciu musíte umiestniť do inicializačných súborov vášho shellu:
Ak používate bash, ash, ksh alebo iný shell typu Bourne, môžete pridať
ABC="123"; export ABC
v súbore .profile
(${HOME}/.profile
). Toto je predvolená situácia vo väčšine unixových inštalácií a najmä v Debiane.
Ak je váš prihlasovací shell bash, môžete namiesto neho použiť súbor .bash_profile
(${HOME}/.bash_profile
) alebo .bash_login
.
Poznámka: Ak existuje niektorý z týchto súborov a váš prihlasovací shell je bash, .profile
sa pri prihlasovaní cez ssh alebo na textovej konzole nenačíta, ale môže sa čítať namiesto .bash_profile
, ak sa prihlasujete z grafického rozhrania. Taktiež, ak neexistuje .bash_profile
, použite .bashrc
.
Ak ste ako prihlasovací shell nastavili zsh, použite ~/.zprofile
namiesto ~/.profile
.
Ak používate tcsh, pridajte
setenv ABC "123"
v súbore .login
(${HOME}/.login
)
Toto je všeobecný postup, ktorý môžete použiť pre takmer všetky škrupiny. V každom prípade musíte vedieť, pomocou ktorého shellu sa používateľ bežne prihlasuje:
path="$(grep $USER /etc/passwd | cut -d ':' -f 7)"
shell="$(basename -- "$path")"
Potom musíte zistiť, ktoré bodové súbory by tento shell normálne čítal:
man $shell
Skratka, ktorá by mohla fungovať, je vypísať tie bodové súbory, ktoré obsahujú názov shellu:
ls ~/.*${shell}*
Ak chcete skontrolovať, či sa niektorý z týchto súborov počas prihlásenia skutočne načítal, môžete jednoducho vypísať napríklad názov súboru v každom z nich:
echo .bashrc
Pri prihlásení by ste potom mali vidieť, ktoré súbory sa čítajú, a môžete sa rozhodnúť, ktorý z nich upraviť. Pozor, nemali by ste sa pokúšať používať echo "$0"
alebo podobné, pretože hodnota $0
závisí od toho, ako shell spracováva bodové súbory, a mohla by byť zavádzajúca.
Pokiaľ ide o deklarovanie premennej "natrvalo", uvedomte si, že sa to vzťahuje len na reláciu. Neexistuje spôsob, ako pristupovať k hodnote premennej bez relácie, takže mimo nej nemá žiadny význam. Ak máte na mysli "len na čítanie", to závisí od shellu a v Bashi môžete použiť:
declare -r VAR
ak už má hodnotu, alebo
declare -r VAR=value
na jej súčasné priradenie. Nie všetky škrupiny majú túto funkciu.
Ak chcete deklarovať premennú vo väčšine shellov, mali by ste použiť názov premennej ([A-Za-z_][A-Za-z0-9_]*
), za ktorým nasleduje znak rovnosti (a bez medzier okolo znaku rovnosti), potom hodnotu (najlepšie v úvodzovkách, pokiaľ hodnota nie je jednoduchá [A-Za-z0-9_]+
). Napríklad:
name="John Doe"
ip=127.0.0.1
HORRIBLE=1
Použite export.
export ABC="123"
Ak chcete skontrolovať, či je nastavená, použite
env
a/alebo
env | grep ABC
Ak ho chcete pridať natrvalo, pridajte ho do svojho súboru ~/.bashrc
.
export ABC="123"