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.
| Shell | Característiques | Ideal per a… |
|---|---|---|
| sh / dash | Mínim i molt ràpid (a Debian, /bin/sh és dash) | Scripts del sistema i portabilitat |
| zsh | Autocompletat potent, molt personalitzable | Qui vol un terminal més vistós i productiu |
| fish | Suggeriments automàtics i colors sense configurar res | Principiants i ús interactiu |
| csh/tcsh | Sintaxi inspirada en C, poc habitual avui | Sistemes 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 $fitxerfalla si el nom té espais. Escriu sempre"$fitxer". - ❌ Confondre rutes absolutes i relatives: un script executat des de
cronno s’executa des del teu directori. Fes servir rutes absolutes ocdal principi. - ❌ Espais en assignar variables:
nom = valorés un error. S’escriunom=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.