GNU/Linux >> Znalost Linux >  >> Linux

Bash nečte .bashrc, pokud není ručně spuštěn

V .bash_profile se ujistěte, že máte následující:

# .bash_profile

# If .bash_profile exists, bash doesn't read .profile
if [[ -f ~/.profile ]]; then
  . ~/.profile
fi

# If the shell is interactive and .bashrc exists, get the aliases and functions
if [[ $- == *i* && -f ~/.bashrc ]]; then
    . ~/.bashrc
fi

Proč by to zdroj? Nemáte spuštěno true bash :

$ echo $SHELL
/bin/sh

Ve většině moderních systémů sh je symbolický odkaz na základní shell. Například na mém Debianu:

$ ls -l /bin/sh 
lrwxrwxrwx 1 root root 4 Aug  1  2012 /bin/sh -> dash

Ve vašem případě sh je odkaz na bash ale jak je vysvětleno v man bash :

Pokud je bash vyvolán s názvem sh, snaží se co nejvěrněji napodobit chování při spuštění historických verzí sh, přičemž je také v souladu se standardem POSIX. [...] Když je bash vyvolán jako interaktivní shell se jménem sh, hledá proměnnou ENV, rozšíří její hodnotu, pokud je definována, a použije expandovanou hodnotu jako název souboru ke čtení a spuštění. Protože shell vyvolaný jako sh se nepokouší číst a spouštět příkazy z jiných spouštěcích souborů , volba --rcfile nemá žádný účinek.

a

--norc
Nečtěte a nespouštějte celosystémový inicializační soubor/etc/bash.bashrc a osobní inicializační soubor ~/.bashrcif, pokud je shell interaktivní. Tato možnost je ve výchozím nastavení zapnutá, pokud je shell vyvolán jako sh.

Takže, protože váš výchozí shell je sh , .bashrc není přečteno. Stačí nastavit váš výchozí shell na bash pomocí chsh -s /bin/bash .


Linux
  1. Začínáme se Zsh

  2. Účel .bashrc a jak to funguje?

  3. [ :Neočekávaný operátor v programování shellu

  1. Chápete význam `$_`?

  2. Jak změnit Cron Shell (sh to Bash)?

  3. Jak na to:Neomezená historie Bash/shell?

  1. Funkce v proměnných Shell?

  2. Jak číst celý skript Shell před jeho spuštěním?

  3. Obnovit .bashrc z aktuálního prostředí?