Comandes LinuxLinuxUsuaris i grups a Linux

/bin/bash: guia completa del shell de Linux per a usuaris



Si alguna vegada t’has preguntat com controlen Linux amb tanta facilitat els administradors de sistemes i els usuaris avançats, la resposta gairebé sempre és la mateixa: Bash. No és una eina més: és la peça que hi ha entre tu i el sistema cada vegada que obres un terminal.

En aquest article t’explico què és /bin/bash, per a què serveix, com assignar-lo als usuaris i, sobretot, com personalitzar-lo perquè treballi com tu vols.


Què és /bin/bash?

/bin/bash és la ruta del programa Bash (Bourne Again SHell), l’intèrpret de comandes més utilitzat a Linux. La seva feina és senzilla d’explicar: llegeix les comandes que escrius i les fa executar al sistema operatiu. També és un llenguatge de programació complet, amb variables, condicions, bucles i funcions.

A les distribucions actuals (Debian 12 i 13, Ubuntu 22.04 o posterior, Fedora…), /bin és un enllaç a /usr/bin, de manera que /bin/bash i /usr/bin/bash són el mateix fitxer:

$ ls -ld /bin
lrwxrwxrwx 1 root root 7 /bin -> usr/bin

$ bash --version | head -1
GNU bash, version 5.2.37(1)-release (aarch64-unknown-linux-gnu)

Una mica d’història

  • Finals dels anys 70: Stephen Bourne crea a Bell Labs el Bourne shell (sh), el pare de tots els shells Unix moderns.
  • 1989: Brian Fox publica Bash per al projecte GNU, com a substitut lliure i compatible amb sh, amb funcions noves.
  • Des de llavors és el shell per defecte de la majoria de distribucions Linux. macOS el va fer servir fins al 2019, quan va passar a zsh.

Per què és tan important

  • Compatibilitat: executa els scripts escrits per a sh.
  • Funcions interactives: historial, autocompletat amb el tabulador, edició de la línia de comandes.
  • Present a tot arreu: servidors, contenidors, el Raspberry Pi, WSL a Windows… Si saps Bash, et pots moure per qualsevol Linux.

Altres shells a Linux

Bash és el més utilitzat, però no l’únic. Pots veure quins tens instal·lats a /etc/shells.

ShellCaracterístiquesIdeal per a…
sh / dashMínim i molt ràpid (a Debian, /bin/sh és dash)Scripts del sistema i portabilitat
zshAutocompletat potent, molt personalitzableQui vol un terminal més vistós i productiu
fishSuggeriments automàtics i colors sense configurar resPrincipiants i ús interactiu
csh/tcshSintaxi inspirada en C, poc habitual avuiSistemes antics

Bash continua sent l’equilibri més segur entre senzillesa, potència i compatibilitat.


Usos principals

1. Ús interactiu

El més bàsic: obrir un terminal i escriure comandes.

ls -l          # Llista fitxers amb detalls
cd /home       # Canvia de directori
echo "Hola"    # Mostra un missatge

2. Automatitzar amb scripts

Aquí és on Bash brilla: un script és un fitxer de text amb comandes que s’executen una darrere l’altra.

Còpia de seguretat amb data:

#!/usr/bin/env bash
set -euo pipefail

desti="$HOME/copies/copia_$(date +%F).tar.gz"
mkdir -p "$HOME/copies"
tar -czf "$desti" "$HOME/Documents"
echo "Còpia feta: $desti"

set -euo pipefail fa que l’script s’aturi al primer error, si fas servir una variable que no existeix o si falla qualsevol comanda d’una canonada. És un bon hàbit per a qualsevol script.

Manteniment del sistema (Debian/Ubuntu):

#!/usr/bin/env bash
set -euo pipefail

sudo apt update
sudo apt upgrade -y
sudo apt autoremove -y
echo "Sistema actualitzat"

Per executar un script, dona-li permís d’execució i crida’l amb la ruta:

chmod +x copia.sh
./copia.sh

3. Administrar el sistema

sudo adduser joan          # Crear un usuari (Debian/Ubuntu)
sudo passwd joan           # Canviar-li la contrasenya
pgrep -a firefox           # Buscar processos per nom
kill 1234                  # Demanar a un procés que acabi
kill -9 1234               # Forçar-lo, només si no respon

Fes servir kill -9 com a últim recurs: no deixa que el programa desi la feina ni tanqui fitxers.

4. Personalitzar l’entorn

El fitxer ~/.bashrc s’executa cada vegada que obres un terminal. És on van els àlies, les funcions i el prompt:

alias ll='ls -la'
alias actualitzar='sudo apt update && sudo apt upgrade -y'

Assignar Bash als usuaris

Cada usuari té un shell d’inici de sessió definit a /etc/passwd.

Crear un usuari amb Bash:

sudo adduser --shell /bin/bash joan     # Debian/Ubuntu
sudo useradd -m -s /bin/bash joan       # qualsevol distribució

Canviar el shell d’un usuari existent:

sudo chsh -s /bin/bash joan

Cada usuari també pot canviar el seu propi shell amb chsh -s /bin/bash. Només s’accepten els shells que surten a /etc/shells.

Comprovar-ho:

$ getent passwd joan
joan:x:1001:1001:,,,:/home/joan:/bin/bash

Compte: echo $SHELL mostra el shell de l’usuari amb què has iniciat la sessió, no el d’un altre usuari, i no canvia fins que tornes a iniciar sessió.


Errors habituals i com evitar-los

  • ❌ L’script no té permís d’execució (Permission denied): chmod +x script.sh.
  • ❌ Variables sense cometes: rm $fitxer falla si el nom té espais. Escriu sempre "$fitxer".
  • ❌ Confondre rutes absolutes i relatives: un script executat des de cron no s’executa des del teu directori. Fes servir rutes absolutes o cd al principi.
  • ❌ Espais en assignar variables: nom = valor és un error. S’escriu nom=valor, sense espais.
  • ❌ Trencar el .bashrc: fes-ne una còpia (cp ~/.bashrc ~/.bashrc.bak) abans d’editar-lo, i prova els canvis en un terminal nou abans de tancar l’actual.

Una ajuda molt bona és ShellCheck (sudo apt install shellcheck): analitza els teus scripts i t’avisa de la majoria d’aquests errors.


Personalitzar Bash al teu gust

Fitxers de configuració

  • ~/.bashrc → s’executa en cada terminal interactiu. És on posaràs gairebé tot.
  • ~/.profile → s’executa en iniciar sessió (Debian i Ubuntu el fan servir per defecte). Si existeix ~/.bash_profile, Bash llegeix aquest en lloc de ~/.profile.
  • /etc/bash.bashrc → configuració comuna per a tots els usuaris (Debian/Ubuntu).

Àlies pràctics

alias ll='ls -la --color=auto'
alias ..='cd ..'
alias actualitzar='sudo apt update && sudo apt upgrade -y'
alias cls='clear'
alias rm='rm -I'    # demana confirmació abans d'esborrar més de 3 fitxers

Variables d’entorn

export EDITOR=nano
export PATH="$PATH:$HOME/scripts"

Funcions útils

# Crear un directori i entrar-hi
mkcd() {
    mkdir -p "$1" && cd "$1"
}

# Buscar processos per nom (amb el PID i la comanda completa)
buscar_proces() {
    pgrep -a -i "$1"
}

Personalitzar el prompt

PS1='\[\e[1;32m\]\u@\h \[\e[1;34m\]\w \$\[\e[0m\] '

Resultat: usuari@màquina en verd i la ruta en blau. 🎨

Eines per anar més enllà

  • Bash-it: col·lecció de temes, àlies i connectors per a Bash.
  • Starship: un prompt ràpid i molt configurable, que també funciona amb zsh i fish.

Plantilla per al teu .bashrc

Pots afegir aquestes línies al final del teu ~/.bashrc:

# Àlies
alias ll='ls -la --color=auto'
alias l='ls -lh'
alias la='ls -A'
alias actualitzar='sudo apt update && sudo apt upgrade -y'
alias netejar='sudo apt autoremove && sudo apt autoclean'
alias rm='rm -I'

# Variables
export EDITOR=nano
export PATH="$PATH:$HOME/scripts"

# Historial més llarg i sense duplicats
HISTSIZE=10000
HISTCONTROL=ignoredups:erasedups

# Funcions
mkcd() { mkdir -p "$1" && cd "$1"; }
buscar_proces() { pgrep -a -i "$1"; }

# Prompt de colors
PS1='\[\e[1;32m\]\u@\h \[\e[1;34m\]\w \$\[\e[0m\] '

Aplica els canvis sense tancar el terminal:

source ~/.bashrc

Conclusió

/bin/bash no és només un intèrpret de comandes: és la porta d’entrada a Linux. Amb Bash executes comandes, automatitzes tasques, administres usuaris i adaptes l’entorn a la teva manera de treballar. Aprendre’n una mica cada dia és de les inversions que més rendeixen si fas servir Linux.


Preguntes freqüents

Puc fer servir Bash a Windows? Sí, amb WSL (Windows Subsystem for Linux), que executa un Linux complet, o amb Git Bash, que ve amb Git per a Windows.

Quina diferència hi ha entre Bash i Zsh? Zsh és més personalitzable i té un autocompletat més potent; Bash és més estàndard i és el que trobaràs instal·lat a qualsevol servidor. Els scripts, millor escriure’ls per a Bash.

Cal ser administrador per fer servir Bash? No. Qualsevol usuari el pot fer servir; només algunes comandes necessiten sudo.

On puc aprendre’n més? Al manual (man bash), a la documentació oficial de GNU i, sobretot, practicant cada dia al terminal.

És segur automatitzar tasques amb Bash? Sí, si revises els scripts, poses les variables entre cometes, fas servir set -euo pipefail i proves abans en un entorn on no puguis fer mal.

Posts relacionats