• Skillnaden mellan .bashrc och .bash_profile – och hur du använder dem rätt

    Om du använder Linux eller Unix-baserade system med Bash har du säkert hört talas om konfigurationsfilerna .bashrc och .bash_profile. De ser snarlika ut – men spelar helt olika roller beroende på hur skalet startas.

    Att förstå dessa två filer är nyckeln till en stabil och anpassad terminalmiljö. Här förklarar vi vad som är vad, hur de används och hur du sätter upp din Bash-konfiguration på bästa sätt.


    Vad är skillnaden?

    .bash_profile körs när du loggar in – till exempel via SSH eller en textkonsol. Den används för att sätta upp din miljö vid inloggning:

    • miljövariabler
    • sökvägar (PATH)
    • startkommandon

    .bashrc körs varje gång du öppnar ett nytt terminalfönster eller manuellt startar Bash. Den är tänkt för:

    • alias
    • promptinställningar
    • funktioner
    • interaktiva verktyg

    Exempel: när används vilken?

    • Loggar du in via SSH?.bash_profile
    • Öppnar du GNOME Terminal?.bashrc
    • Kör du bash i en terminal?.bashrc
    • Startar du datorn och loggar in grafiskt? → det beror på miljön (mer om det nedan)

    Bästa praxis: låt .bash_profile köra .bashrc

    För att slippa duplicera kod och få samma konfiguration oavsett hur Bash startas, kan du lägga till detta i din .bash_profile:

    if [ -r ~/.bashrc ]; then
      . ~/.bashrc
    fi
    

    Vill du att .profile också laddas (t.ex. för grafiska inloggningar), lägg till:

    if [ -r ~/.profile ]; then
      . ~/.profile
    fi
    

    För extra kontroll, t.ex. att bara ladda .bashrc i interaktiva skal:

    case "$-" in
      *i*) [ -r ~/.bashrc ] && . ~/.bashrc ;;
    esac
    

    Vad är /etc/bash.bashrc?

    Det är en systemomfattande fil som Bash kör för alla användare. Här kan administratörer sätta gemensamma sökvägar, alias eller andra inställningar som ska gälla oavsett användarkonto.

    Använd den om du vill att alla användare ska ha t.ex. samma PATH eller standardalias som ll.

    Grafiska miljöer: ett specialfall

    När du loggar in via ett skrivbord som GNOME, KDE eller Xfce kan det hända att .bash_profile eller .bashrc inte körs automatiskt. I vissa fall laddas .profile, i andra inte alls.

    Det gör att miljövariabler du sätter i .bash_profile kanske inte gäller i t.ex. terminalen inne i din skrivbordsmiljö – om inte .bashrc eller .profile laddas korrekt.

    Lösning: testa i din miljö och flytta miljövariabler till .profile eller .pam_environment vid behov.

    Sammanfattning

    FilNär används den?Vad bör ligga där?
    .bash_profileVid inloggning (SSH, tty)Miljövariabler, startkommandon
    .bashrcI interaktiva terminalfönsterAlias, funktioner, prompt
    /etc/bash.bashrcFör alla användare (interaktivt)Systemövergripande inställningar

    Bonus: testa själv

    Vill du se exakt vad som körs? Lägg in något så enkelt som:

    echo "Kör .bashrc" >> ~/bashlog.txt
    

    i respektive fil, logga in på olika sätt, och kolla vad som skrivs ut i bashlog.txt.

    Slutsats

    Genom att förstå när .bashrc och .bash_profile används kan du skapa en smidig och konsekvent terminalmiljö – både för dig själv och andra användare.

    Exempelscript

    ~/.bash_profile (för inloggningssessioner)

    # ~/.bash_profile – Körs vid inloggning (t.ex. via SSH eller tty)
    
    # Ladda ~/.profile om den finns (vanlig i grafiska miljöer)
    if [ -r ~/.profile ]; then
      . ~/.profile
    fi
    
    # Om skalet är interaktivt (har en prompt), ladda .bashrc
    # Det ger dig alias, färgade listningar m.m. även vid inloggning
    case "$-" in
      *i*)
        if [ -r ~/.bashrc ]; then
          . ~/.bashrc
        fi
        ;;
    esac
    
    # Lägg till ~/bin i PATH om det inte redan finns
    # Praktiskt om du har egna skript i hemkatalogen
    if [[ ":$PATH:" != *":$HOME/bin:"* ]]; then
      export PATH="$HOME/bin:$PATH"
    fi
    

    ~/.bashrc (för alla interaktiva terminalsessioner)

    # ~/.bashrc – Körs i alla interaktiva terminalsessioner
    
    # Anpassa prompten (PS1)
    # Visar användarnamn, värdnamn och aktuell katalog i grönt
    PS1='\[\e[1;32m\]\u@\h:\w\$\[\e[0m\] '
    
    # Alias – smidiga genvägar till vanliga kommandon
    alias ll='ls -lah --color=auto'   # Färgkodad lång listning
    alias grep='grep --color=auto'   # Färg i grep-resultat
    alias cls='clear'                # Rensa terminalen
    alias ..='cd ..'                 # Gå upp en nivå
    alias ...='cd ../..'             # Gå upp två nivåer
    
    # Ersätt 'rm' med säkrare variant – flytta till papperskorg
    # Kräver att 'trash-cli' är installerat
    alias rm='trash-put'
    
    # Egen funktion för att uppdatera systemet snabbt
    # (Gäller Debian/Ubuntu-baserade system – byt vid behov)
    update-system() {
      echo "Uppdaterar systemet..."
      sudo apt update && sudo apt upgrade -y
    }
    
    # Lägg till lokal katalog (~/.local/bin) i PATH
    # Används ofta för Python-paket installerade med pip
    if [[ ":$PATH:" != *":$HOME/.local/bin:"* ]]; then
      export PATH="$HOME/.local/bin:$PATH"
    fi
    
    # Miljövariabler
    
    export EDITOR=nano               # Standardredigerare = nano
    export HISTCONTROL=ignoredups:erasedups  # Ta bort upprepade kommandon i historik
    export HISTSIZE=10000            # Antal rader som sparas i RAM
    export HISTFILESIZE=20000        

    Tips för användning:

    • Lägg filerna i din hemkatalog: ~/.bash_profile och ~/.bashrc
    • Kör source ~/.bashrc för att läsa in ändringar direkt
    • Installera trash-cli med sudo apt install trash-cli om du vill använda ”säker rm”
    • Anpassa update-system om du använder t.ex. Arch (sudo pacman -Syu) eller Fedora (sudo dnf upgrade)

Skillnaden mellan .bashrc och .bash_profile – och hur du använder dem rätt

Om du använder Linux eller Unix-baserade system med Bash har du säkert hört talas om konfigurationsfilerna .bashrc och .bash_profile. De ser snarlika ut – men spelar helt olika roller beroende på hur skalet startas.

Att förstå dessa två filer är nyckeln till en stabil och anpassad terminalmiljö. Här förklarar vi vad som är vad, hur de används och hur du sätter upp din Bash-konfiguration på bästa sätt.


Vad är skillnaden?

.bash_profile körs när du loggar in – till exempel via SSH eller en textkonsol. Den används för att sätta upp din miljö vid inloggning:

  • miljövariabler
  • sökvägar (PATH)
  • startkommandon

.bashrc körs varje gång du öppnar ett nytt terminalfönster eller manuellt startar Bash. Den är tänkt för:

  • alias
  • promptinställningar
  • funktioner
  • interaktiva verktyg

Exempel: när används vilken?

  • Loggar du in via SSH?.bash_profile
  • Öppnar du GNOME Terminal?.bashrc
  • Kör du bash i en terminal?.bashrc
  • Startar du datorn och loggar in grafiskt? → det beror på miljön (mer om det nedan)

Bästa praxis: låt .bash_profile köra .bashrc

För att slippa duplicera kod och få samma konfiguration oavsett hur Bash startas, kan du lägga till detta i din .bash_profile:

if [ -r ~/.bashrc ]; then
  . ~/.bashrc
fi

Vill du att .profile också laddas (t.ex. för grafiska inloggningar), lägg till:

if [ -r ~/.profile ]; then
  . ~/.profile
fi

För extra kontroll, t.ex. att bara ladda .bashrc i interaktiva skal:

case "$-" in
  *i*) [ -r ~/.bashrc ] && . ~/.bashrc ;;
esac

Vad är /etc/bash.bashrc?

Det är en systemomfattande fil som Bash kör för alla användare. Här kan administratörer sätta gemensamma sökvägar, alias eller andra inställningar som ska gälla oavsett användarkonto.

Använd den om du vill att alla användare ska ha t.ex. samma PATH eller standardalias som ll.

Grafiska miljöer: ett specialfall

När du loggar in via ett skrivbord som GNOME, KDE eller Xfce kan det hända att .bash_profile eller .bashrc inte körs automatiskt. I vissa fall laddas .profile, i andra inte alls.

Det gör att miljövariabler du sätter i .bash_profile kanske inte gäller i t.ex. terminalen inne i din skrivbordsmiljö – om inte .bashrc eller .profile laddas korrekt.

Lösning: testa i din miljö och flytta miljövariabler till .profile eller .pam_environment vid behov.

Sammanfattning

FilNär används den?Vad bör ligga där?
.bash_profileVid inloggning (SSH, tty)Miljövariabler, startkommandon
.bashrcI interaktiva terminalfönsterAlias, funktioner, prompt
/etc/bash.bashrcFör alla användare (interaktivt)Systemövergripande inställningar

Bonus: testa själv

Vill du se exakt vad som körs? Lägg in något så enkelt som:

echo "Kör .bashrc" >> ~/bashlog.txt

i respektive fil, logga in på olika sätt, och kolla vad som skrivs ut i bashlog.txt.

Slutsats

Genom att förstå när .bashrc och .bash_profile används kan du skapa en smidig och konsekvent terminalmiljö – både för dig själv och andra användare.

Exempelscript

~/.bash_profile (för inloggningssessioner)

# ~/.bash_profile – Körs vid inloggning (t.ex. via SSH eller tty)

# Ladda ~/.profile om den finns (vanlig i grafiska miljöer)
if [ -r ~/.profile ]; then
  . ~/.profile
fi

# Om skalet är interaktivt (har en prompt), ladda .bashrc
# Det ger dig alias, färgade listningar m.m. även vid inloggning
case "$-" in
  *i*)
    if [ -r ~/.bashrc ]; then
      . ~/.bashrc
    fi
    ;;
esac

# Lägg till ~/bin i PATH om det inte redan finns
# Praktiskt om du har egna skript i hemkatalogen
if [[ ":$PATH:" != *":$HOME/bin:"* ]]; then
  export PATH="$HOME/bin:$PATH"
fi

~/.bashrc (för alla interaktiva terminalsessioner)

# ~/.bashrc – Körs i alla interaktiva terminalsessioner

# Anpassa prompten (PS1)
# Visar användarnamn, värdnamn och aktuell katalog i grönt
PS1='\[\e[1;32m\]\u@\h:\w\$\[\e[0m\] '

# Alias – smidiga genvägar till vanliga kommandon
alias ll='ls -lah --color=auto'   # Färgkodad lång listning
alias grep='grep --color=auto'   # Färg i grep-resultat
alias cls='clear'                # Rensa terminalen
alias ..='cd ..'                 # Gå upp en nivå
alias ...='cd ../..'             # Gå upp två nivåer

# Ersätt 'rm' med säkrare variant – flytta till papperskorg
# Kräver att 'trash-cli' är installerat
alias rm='trash-put'

# Egen funktion för att uppdatera systemet snabbt
# (Gäller Debian/Ubuntu-baserade system – byt vid behov)
update-system() {
  echo "Uppdaterar systemet..."
  sudo apt update && sudo apt upgrade -y
}

# Lägg till lokal katalog (~/.local/bin) i PATH
# Används ofta för Python-paket installerade med pip
if [[ ":$PATH:" != *":$HOME/.local/bin:"* ]]; then
  export PATH="$HOME/.local/bin:$PATH"
fi

# Miljövariabler

export EDITOR=nano               # Standardredigerare = nano
export HISTCONTROL=ignoredups:erasedups  # Ta bort upprepade kommandon i historik
export HISTSIZE=10000            # Antal rader som sparas i RAM
export HISTFILESIZE=20000        

Tips för användning:

  • Lägg filerna i din hemkatalog: ~/.bash_profile och ~/.bashrc
  • Kör source ~/.bashrc för att läsa in ändringar direkt
  • Installera trash-cli med sudo apt install trash-cli om du vill använda ”säker rm”
  • Anpassa update-system om du använder t.ex. Arch (sudo pacman -Syu) eller Fedora (sudo dnf upgrade)