[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]


289. Configurazione della console

289.1 Le variabili nella shell bash

Come si utilizzano le variabili nella shell bash?

In genere si utilizzano nomi di variabili con caratteri maiuscoli e si dichiarano da riga di
comando nel seguente modo:

NOMEVARIABILE=valore

e l'utilizzo della variabile si effettua con il simbolo $ davanti il nome della variabile:

RICOMP_KERNEL=/usr/src/linux
cd $RICOMP_KERNEL

Come si visualizzano tutte le variabili d'ambiente del sistema?

il comando è:

set

Per vedere il contenuto di una variabile si utilizza il comando:

echo $NOME_VARIABILE

e per svuotarne il contenuto si usa:

unset NOME_VARIABILE.

Ad ogni riavvio della shell o ad ogni cambio shell, le variabili si riazzerano.
Per rendere disponibile una variabile anche all'esterno, si usa il comando:

export NOME_VARIABILE

289.2 Personalizzare il prompt

Come si personalizza l'aspetto del prompt con la shell bash?

Il prompt si personalizza assegnando 'formattatori' particolari alla variabile PS1:

PS1="\w\$>"

Ecco i formattatori:

\d data;
\h nome macchina;
\n a capo;
\s nome della shell;
\t ora;
\u nome utente;
\w directory corrente;
\W il nome di base della directory corrente;
\# il numero del comando corrente;
\$ emette # se l'utente è root altrimenti $;
\! il numero nello storico del comando corrente;
\\ backslash;
\[ inizia una sequenza di caratteri non stampabili;
\] chiude la sequenza.

Quali sono le variabili di sistema più comuni?

HOME directory home;
HOSTTYPE tipo di macchina;
PS1 prompt primario;
PWD directory corrente;
UID numero identificativo utente;
$ PID della shell;
! PID dell'ultimo processo in background.

289.3 Configurare il prompt

Che prompt mi consigliate di usare? Ne avete uno utile e pratico?

Metti nel tuo file /home/.profile (o /home/.bash_profile) la seguente riga
(a scopo pratico la riga è stata suddivisa in 3; ricordate di ricomporle su una
stessa riga una di seguito l'altra):
 
export PS1='\[\033[1;34m\]\n\u@\h \[\033[1;33m\]---\[\033[1;34m\
][`pwd`] \[\033[1;33m\]---\[\033[1;34m\] [\t]\[\033[1;33m\]--- \
[\033[1;31m\]\!\n\[\033[1;31m\]*\[\033[0;37m\] '

eccone un altro:

YLOBRN='\[\033[01;33;43m\]'
WHTBRN='\[\033[01;37;43m\]'
REDBRN='\[\033[00;31;43m\]'
REDBLK='\[\033[00;31;40m\]'
PPLBLK='\[\033[01;35;40m\]'
WHTBLK='\[\033[01;37;40m\]'
NONE='\[\033[00m\]'
HBLK='\[\033[00;30;30m\]'
HBLU='\[\033[01;34;34m\]'
BLU='\[\033[00;34;34m\]'
YEL='\[\033[00;33;33m\]'
WHT='\[\033[01;37;37m\]'
PRPL='\[\033[00;34;35m\]'
RED='\[\033[01;31;31m\]'
NORM='\[\033[01;00;0m\]'
CYAN='\[\033[00;31;36m\]'

case "$TERM" in
 xterm | xterm-color | xterm-debian | rxvt)
  # negli XTerm imposta anche il titolo della finestra e dell'icona
  PS1="\[\033]1;\u: \w\007\033]2;\u: \w\007\033[01;37m\]$NORM\u@\h: $WHT\w $HBLU<\t>$NORM\n$CYAN"'\$'"$NORM "
       ;;
   linux)
       # in console
       PS1="$NORM\u@\h: $WHT\w $HBLU<\t>$NORM\n$CYAN"'\$'"$NORM "
       ;;
   *)
        # altrimenti un prompt semplice
        PS1='\u@\h: \w \$ '
       ;;
esac

export PS1

R: Elisa Manara, Davide Alberani

289.4 Disabilitare il login di una console virtuale

Come posso disabilitare il login per una console virtuale?

Apri il file /etc/inittab, ci sono delle righe come queste:

1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6

corrispondenti alle sei console virtuali. Commenta (apponendo # all'inizio
della riga) quelle che non ti interessano.

D: Berry
R: Fabrizio Lippolis

289.5 Apici inversi nella shell

Gli apici retroversi (`), a cosa servono esattamente?


Esattamente la shell effettua un'espansione, eseguendo il comando all'interno
degli apici inversi e catturandone lo standard output. Quest'ultimo verrà
poi opportunamente sostituito.

Lo stesso risultato si può ottenere utilizzando le due forme:

`nome_comando` e $(nome_comando)

Alcuni esempi:

ls -l `which man`

* espansione: il comando "which man" ha come standard
  output /usr/bin/man, la shell eseguirà quindi
  ls -l /usr/bin/man

BLA= `cat /etc/inetd.conf`

echo $BLA

* nella variabile BLA viene registrato tutto   l'output del
  comando "cat /etc/inetd.conf", infatti con "echo $BLA" possiamo
  rivedere tutto il contenuto del file.

kill -1 `pidof inetd`

* il comando "pidof inetd" restituisce in standard output l'attuale
  pid di inetd, quindi la shell eseguirà kill -1 63, per esempio.

D: Renato Ferrari
R: Elisa Manara

289.6 History, lo storico dei comandi

Come si utilizza lo storico dei comandi?

si da il comando:

history

e viene visualizzata una lista di comandi eseguiti con il numero corrispondente.
Per eseguire uno di questi comandi si utilizza il punto esclamativo davanti al numero del
comando da rieseguire:

!267

Per richiamare dallo storico tutti i comandi che iniziano con una stringa si utilizza:

!stringa

289.7 Reindirizzare i messaggi di /dev/console su un altra console

Da quando ho installato Linux la prima console virtuale (quella che si attiva premendo Alt+F1) si riempie di messaggi che finiscono su /dev/console, lasciando comunque la possibilità di fare login. Come posso mandare questi messaggi su un'altra console virtuale?

Basta aggiungere nel file /etc/lilo.conf la riga 

append="console=tty6"

nella sezione image.
Esempio:

           image=/boot/vmlinuz-2.0.36-1
           label=linux
           root=/dev/hda2
           append="console=tty6"
           read-only

Poi devi dare il comando:

/sbin/lilo

per rendere effettive le modifiche.

R: Stefano Berretta

289.8 Modalità grafica della console

Come si fa a cambiare la modalità grafica della console? (adesso ho 80x25 ma vorrei aumentare il numero delle righe)

se usi lilo come gestore degli avvii, puoi usare la direttiva 'vga' 
con vga=extended e avrai 80x50 

(altri valori sono 'normal','ask',<number>)

Altrimenti puoi usare vidmode (rdev) per impostare la modalità video.

Quella predefinita è impostata attraverso la variabile SVGA_MODE nel Makefile del
kernel.

D: Erigotti
R: Alfonso de Gregorio

289.9 Messaggio di errore: shell-init: could not get current directory: getcwd: cannot access parent directories

Quando da utente root provo a passare ad un utente con il comando 'su utente', mi viene restituito il seguente messaggio:

 
# su pinco
shell-init: could not get current directory: getcwd: cannot access parent directories

Se esegui:
$>su - nome_utente 
carichi anche l'ambiente dell'utente.

D: Il Paolone
R: Alfonso 

289.10 Tabella caratteri inesatta (bordi dei riquadri con caratteri strani)

Dalla console, se lancio l'utilità "setup" i riquadri di contorno delle finestre appaiono con a accentate e altri caratteri non congrui.

Prova a scrivere, sempre da console:

export TERM=vt100

D: Roberto Previdi
R: The Hitman

---------------------------

LDR --- Copyright © 1999-2000 Gaetano Paolone --  bigpaul @ pluto.linux.it


[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]