Appunti su Gentoo Linux.
Piccole correzioni

I file di configurazione di Bash

File caricati al login (il . sono i file della propria home)
1. /etc/profile che carica: /etc/profile.env e i file .sh in /etc/profile.d/
(il file profile.env è generato automaticamente da env-update prendendo
i file dentro /etc/env.d/. Quindi non va modificato!)
2. .bash_profile o .bash_login o .profile (in ordine)

File caricati all'apertura di una shell non di login
1. /etc/bash/bashrc
2. .bashrc

File caricati quando si esce da una shell
1. /etc/bash/bash_logout
2. .bash_logout

Per avere delle impostazioni personalizzate che vengono caricate indipendentemente se la shell è di login o meno, la cosa migliore è fare il source del file bashrc/.bashrc dal file profile/.bash_profile. Nella configurazione di default il file /etc/bash/bashrc viene già caricato dal file /etc/profile. Quindi non dovete fare nulla.

Quando si dovranno aggiungere comandi personalizzati o altro, ragionevolmente li si metteranno nel file .bashrc (da creare insieme al file .bash_profile in cui si carica il file .bashrc (source ~/.bashrc)) se sono impostazioni per utente oppure nel file bashrc se sono impostazioni globali.

Le variabili d'ambiente

In Gentoo c'è un meccanismo specifico aggiuntivo per gestire le variabili d'ambiente: la directory /etc/env.d/. Creare per esempio 10editor e scriverci EDITOR="/usr/bin/ne". Poi eseguire env-update e poi caricate /etc/profile. (Io ho usato ne perché mi piace, di solito ci si mette nano, vi o emacs.)

In realtà molte variabili d'ambiente standard possono essere impostate dagli strumenti di amministrazione di Gentoo.

eselect editor list

eselect editor set 1

eselect editor set ne

Fate attenzione che nella directory /etc/env.d non potete usare l'espansione delle variabili d'ambiente. In pratica le direttive di quei file vi permettono di impostare una certa variabile d'ambiente mai usata prima, vi permettono anche di definire una variabile già definita (come PATH): in questo caso ciò che voi avrete specificato viene aggiunto in coda alla definizione precedente. Il tutto con una sintassi molto semplice, non c'è bisogno di export e non c'è bisogno di richiamare il contenuto della variabile d'ambiente che si vuole modificare

PIPPO="/bin/pippo"

Se però volete usare un'assegnazione "dinamica", dove avete bisogno di espandere delle variabili d'ambiente, dovete rinunciare a usare i file della directory /etc/env.d e tornare al file bashrc.

A me piace aggiungere sempre alla variabile PATH, per tutti gli utenti, la directory $HOME/bin. Per farlo non ho bisogno del file bashrc però preferisco usarlo per motivi di comodità:

PATH="~/bin:${PATH}"

Salvate e date env-update e source /etc/profile.

Comandi e alias

La definizione di alias e funzioni, come detto, va in bashrc/.bashrc.

Alcuni comandi della shell sono abbastanza pericolosi. Tra questi i peggiori sono cp (copia), rm (rimuovi) e mv (sposta o rinomina). Infatti questi comandi vengono usati molto spesso se si usa la shell ma sono anche molto pericolosi perché permettono di sovrascrivere o elimare file o cartelle senza prima chiedere la conferma.

Per ovviare a questo problema si usano degli alias. Si ricorda che gli alias vengono sempre ignorati quando non si è in modalità interattiva, cioè qualsiasi script (a meno di non dichiararlo esplicitamente all'inizio dello script) non userà mai alcun tipo di alias.

Alla fine del file /etc/bash/bashrc:
alias rm='rm -i'
alias mv='mv -i'
alias cp='cp -i'
alias cd..='cd ..'

Decommentare la riga clear nel file /etc/bash/bash_logout.

Il cestino per la shell

Creazione del comando trash. Esistono varie implementazioni come script bash: Script1, Script2, Script3. L'ultimo script sembra il migliore. Ragionevolmente ne andrebbe scritto uno nuovo da zero facendo un sunto di questi tre. C'è poi anche uno script python, chiamato trash-cli, molto potente e ben fatto (da un italiano!). Ancora non è disponibile in portage però può essere installato da un overlay oppure scaricato da internet. In ogni caso è uno script da cui prendere sicuramente spunto.