Un .bashrc para terminal. Historial sólido, PATH sin duplicados y funciones que sí uso.
Configuración personal de ~/.bashrc para GNU/Linux (Ubuntu / Debian). Está pensada para que recargarla con source ~/.bashrc no rompa nada ni duplique rutas, y para que cada bloque sea fácil de leer, activar o quitar.
Repositorio: https://github.com/swbasmx/bashrc
- PATH idempotente:
path_prependypath_appendcomprueban si la ruta ya existe antes de añadirla. Recargar el archivo no acumula entradas. - Historial serio: 100 000 entradas, sin duplicados, con fecha y hora, comandos multilínea unificados y escritura inmediata con
history -apara compartirlo entre terminales. - Comodidad de shell:
autocd,globstar(**),cdspell,direxpandy corrección del tamaño de ventana. - Readline útil: flechas ↑/↓ buscan por lo ya escrito, tabulación sin distinguir mayúsculas y bracketed paste (un pegado no ejecuta el comando).
- Prompt lambda en dos líneas, con título de ventana que muestra usuario, host y directorio.
- Funciones de trabajo:
ideb,mkcd,bakyex(extractor universal). - Integraciones opcionales que solo se cargan si existen: NVM, pnpm,
bash-completion,lesspipe,fastfetch,info-wcy el toolchain de REA (JDK + Ghidra). - Credenciales fuera del repo:
~/.apisse carga si existe, nunca se versiona. - Sin dependencias raras: Bash y utilidades estándar.
- Linux.
- Bash 5+ (por
enable-bracketed-paste). - Utilidades base:
coreutils,less,dircolors,bash-completion. - Opcionales:
nalaparaideb; si no está, usaapt.nvm,pnpm,fastfetchyinfo-wcsi usas esas herramientas.unrar/unar,7z,zstd,lz4,xzylzmapara las extensiones correspondientes deex.gpgpara firmar commits (se exportaGPG_TTY).
git clone https://github.com/swbasmx/bashrc.git
cd bashrc
[ -f ~/.bashrc ] && cp -a ~/.bashrc ~/.bashrc.bak-$(date +%Y%m%d-%H%M%S)
ln -sfn "$PWD/.bashrc" ~/.bashrc
source ~/.bashrcEl ln -sfn apunta ~/.bashrc al archivo del repo: lo que edites ahí queda versionado. La copia de seguridad se crea antes de sustituirlo.
Si prefieres no usar enlace simbólico:
cp -a ~/Proyectos/bashrc/.bashrc ~/.bashrc
chmod 640 ~/.bashrc
source ~/.bashrcLas primeras líneas apuntan a la instalación local de JDK y Ghidra del autor. Cámbialas por las tuyas o elimina ese bloque si no usas esas herramientas:
export JAVA_HOME="$HOME/.local/opt/jdk-25.0.5+8"
export GHIDRA_INSTALL_DIR="$HOME/.local/opt/ghidra_12.2_PUBLIC"| Función | Qué hace |
|---|---|
path_prepend <dir> |
Añade <dir> al inicio del PATH si no estaba. |
path_append <dir> |
Añade <dir> al final del PATH si no estaba. |
ideb <archivo.deb> [...] |
Instala uno o varios .deb locales con nala (o apt). |
mkcd <directorio> |
Crea el directorio y entra en él. |
bak <archivo> [...] |
Copia cada archivo a <archivo>.bak-AAAAMMDD-HHMMSS. |
ex <comprimido> |
Extrae según la extensión. |
mkcd ~/Proyectos/nuevo
bak ~/.bashrc
ex paquete.tar.zst
ideb ./app_1.2.3_amd64.deb.tar.bz2, .tbz2, .tar.gz, .tgz, .tar.xz, .txz, .tar.zst, .tzst,
.tar.lz4, .tlz4, .tar.lzma, .tlz, .tar, .bz2, .gz, .xz, .zst,
.lz4, .lzma, .Z, .zip, .jar, .rar, .7z.
Si existen, se ejecuta fastfetch; si no, info-wc. Para desactivarlo:
export SHOW_FASTFETCH=0Ponlo en ~/.bash_aliases o en ~/.apis para que se cargue después.
| Bloque | Contenido |
|---|---|
| 0 | path_prepend / path_append y rutas de REA. |
| 1 | Guarda para ejecutarse solo en shells interactivos. |
| 2 | Historial y PROMPT_COMMAND. |
| 3 | Opciones de shell, readline y alias sudo='sudo '. |
| 4 | LESS, lesspipe, GPG_TTY y debian_chroot. |
| 5 | Prompt y título de ventana. |
| 6 | dircolors. |
| 7 | ~/.local/bin y ~/bin en el PATH. |
| 8 | Funciones de utilidad. |
| 9-10 | NVM y pnpm (opcionales). |
| 11-12 | bash-completion, ~/.bash_aliases y ~/.apis. |
| 13 | Banner de sistema. |
- Prompt: edita
PS1en el bloque 5. El bloque opcional de rama de Git está comentado al final. - Historial: ajusta
HISTSIZE,HISTFILESIZEeHISTIGNOREen el bloque 2. - Banner:
SHOW_FASTFETCH=0lo desactiva;SHOW_FASTFETCH=1lo reactiva. - PATH: usa siempre
path_prependopath_appendpara no duplicar entradas.
- Este repositorio no contiene credenciales.
- La nota del archivo asume que las claves viven en
~/.apis. Si lo usas, protégelo:
chmod 600 ~/.apis- No pongas secretos en
~/.bashrc: es legible por otros usuarios del sistema.
Restaura tu copia de seguridad y borra el enlace:
rm -f ~/.bashrc
cp -a ~/.bashrc.bak-AAAAMMDD-HHMMSS ~/.bashrcSi instalaste con copia manual y quieres volver al .bashrc del sistema:
cp -a /etc/skel/.bashrc ~/.bashrcMIT. Consulta LICENSE.
Estructura y estilo de documentación inspirados en info-wc. El prompt y los bloques de colores son de uso personal.