Pagina 1 di 2
Prima riga sovrascritta in Bash
Inviato: dom 30 gen 2011, 9:52
da hashbang
Salve a tutti,
ieri ho modificato il file .bashrc per attivare l'evidenziazione del nome utente e dell'hostname. Il problema è che da quando ho modificato il .bashrc, ogni volta che apro un terminale (anche le console di sistema) e inizio a scrivere del testo, esso sovrascrive la stessa riga non appena si arriva alla metà dello schermo (in proporzione alla grandezza del terminale, in caso di xterm o sakura è la metà della finestra). Inoltre se c'era già del testo in precedenza e provo a cancellare quello che scrivo al momento, noto che esso cancella ciò che era stato precedentemente scritto. Se disattivo il .bashrc, questo problema non si verifica.
Mi sono documentato su Google, ma non ho trovato nulla a riguardo.
Avete qualche consiglio da dare?
Re: Prima riga sovrascritta in Bash
Inviato: dom 30 gen 2011, 11:02
da 414N
Senza informazioni specifiche è un po' dura...
Quale modifica hai fatto, di preciso? Hai modificato la variabile d'ambiente PS1?
Re: Prima riga sovrascritta in Bash
Inviato: dom 30 gen 2011, 12:33
da hashbang
414N ha scritto:Senza informazioni specifiche è un po' dura...
Quale modifica hai fatto, di preciso? Hai modificato la variabile d'ambiente PS1?
Hai ragione.
Ecco il .bashrc
Codice: Seleziona tutto
$ cat .bashrc
# Check for an interactive session
[ -z "$PS1" ] && return
alias ls='ls -al --color=always'
alias grep='grep --color=always'
alias more='more -d'
PS1='\e[1;32m\u\e[1;33m@\e[1;34m\h\e[0m\e[1;33m:\w\e[1;32m$\e[0;0m '
Re: Prima riga sovrascritta in Bash
Inviato: dom 30 gen 2011, 13:18
da joseph
Bahh il bashrc sembra a posto mi verrebbe da pensare di fare due prove.
Prima provare senza il bashrc e vedere se si presenta il problema,
se esso non si verifica proverei a sistemare meglio (senza i vari colori) la variabile PS1
Facci sapere

Re: Prima riga sovrascritta in Bash
Inviato: dom 30 gen 2011, 14:10
da hashbang
joseph ha scritto:Bahh il bashrc sembra a posto mi verrebbe da pensare di fare due prove.
Prima provare senza il bashrc e vedere se si presenta il problema,
se esso non si verifica proverei a sistemare meglio (senza i vari colori) la variabile PS1
Facci sapere

L'avevo già detto

Senza il .bashrc il problema non si presenta.
Re: Prima riga sovrascritta in Bash
Inviato: dom 30 gen 2011, 14:58
da Mario Vanoni
atomix600 ha scritto:414N ha scritto:Senza informazioni specifiche è un po' dura...
Quale modifica hai fatto, di preciso? Hai modificato la variabile d'ambiente PS1?
Hai ragione.
Ecco il .bashrc
Codice: Seleziona tutto
$ cat .bashrc
# Check for an interactive session
[ -z "$PS1" ] && return
alias ls='ls -al --color=always'
alias grep='grep --color=always'
alias more='more -d'
PS1='\e[1;32m\u\e[1;33m@\e[1;34m\h\e[0m\e[1;33m:\w\e[1;32m$\e[0;0m '
IMVHO manca un export PS1=...
Re: Prima riga sovrascritta in Bash
Inviato: dom 30 gen 2011, 18:12
da hashbang
Non va. Ho provato il suggerimento di Mario, ma il problema non si risolve.
Re: Prima riga sovrascritta in Bash
Inviato: dom 30 gen 2011, 18:40
da 414N
atomix600 ha scritto:Codice: Seleziona tutto
PS1='\e[1;32m\u\e[1;33m@\e[1;34m\h\e[0m\e[1;33m:\w\e[1;32m$\e[0;0m '
Forse hai sbagliato il codice finale. Invece di
0;0m, mettici solo
0m.
A cosa serve poi la sequenza
\e[0m\e[1;33m? Imposti al colore di default per poi cambiarlo subito in giallo?
Re: Prima riga sovrascritta in Bash
Inviato: dom 30 gen 2011, 19:29
da hashbang
414N ha scritto:Forse hai sbagliato il codice finale. Invece di 0;0m, mettici solo 0m.
Il comando \e[0;0m mi serve per annullare il colore e il grassetto. Se tolgo il primo zero, l'intero valore del terminale sarà in grassetto.
414N ha scritto:A cosa serve poi la sequenza \e[0m\e[1;33m? Imposti al colore di default per poi cambiarlo subito in giallo?
Quì hai ragione. L'ho tolta.
Comunque ho notato che più riduco il bashrc, più il limite di sovra scrittura diminuisce. Che sia la variabile PS1 troppo lunga?
Re: Prima riga sovrascritta in Bash
Inviato: mer 27 apr 2011, 15:05
da hashbang
Salve a tutti, riesumo questo vecchio problema perchè ho trovato un palliativo "assurdo" al problema.
Praticamente, se metto le sequenze di escape in delle variabili che poi andrò a richiamare in PS1, questo difetto sparisce.
Lascio comunque il topic aperto, nel caso in cui qualcuno avesse delucidazioni in merito.
EDIT: Posto il bashrc per mostrare meglio il palliativo:
Codice: Seleziona tutto
$ cat .bashrc
BLUE="\[\e[1;34m\]"
NORMAL="\[\e[0;0m\]"
if [ $(whoami) = root ]; then
RED="\[\e[1;31m\]"
USER=$RED
else
GREEN="\[\e[1;32m\]"
USER=$GREEN
fi
PS1="$USER\u [ $BLUE\w $USER]$ $NORMAL"
Re: Prima riga sovrascritta in Bash
Inviato: mer 27 apr 2011, 17:04
da Paoletta
la mia e' inizializzata in questo modo:
Codice: Seleziona tutto
\[\033[01;32m\]\u\[\033[01;31m\]@\[\033[01;32m\]\h \[\033[01;31m\]\w \$ \[\033[0;33m\]
magari puo' tornatrti utile...tra l'altro il problema in questione viene dato anche in runlevel 3 (quindi non e' un problema di emulatori di terminali)
Re: Prima riga sovrascritta in Bash
Inviato: mer 27 apr 2011, 20:19
da hashbang
Paoletta ha scritto:la mia e' inizializzata in questo modo:
Codice: Seleziona tutto
\[\033[01;32m\]\u\[\033[01;31m\]@\[\033[01;32m\]\h \[\033[01;31m\]\w \$ \[\033[0;33m\]
magari puo' tornatrti utile...tra l'altro il problema in questione viene dato anche in runlevel 3 (quindi non e' un problema di emulatori di terminali)
Ma a questo punto non penso sia neanche problema di Bash, in quanto lo stesso "difetto" l'ho trovato in zsh (che ho da poco sostituito a bash come shell di default).
Lì la soluzione è stata addirittura più assurda, in quanto il valore della variabile PS1 risulta essere addirittura più lungo del valore (compreso di sequenze di escape) che avevo messo io.
Io avevo settato la variabile PS1 esattamente allo stesso modo di come settavo Bash, e infatti i colori sulla shell venivano caricati. Il problema era che anche lì si verificava il fastidio presente.
Su zsh ho risolto con:
Codice: Seleziona tutto
$ cat .zshrc | grep PS1
export PS1="$(print '%B%{\e[31m%}%n%{\e[0m%}%b') $(print '%B%{\e[32m%}%~ >%{\e[0m%}%b') "
Re: Prima riga sovrascritta in Bash
Inviato: mer 27 apr 2011, 22:13
da targzeta
Scusa, ma se non setti la variabile PS1 tutto funziona? Perché se è così allora è evidente che il problema è lì, sinceramente l'uso del \e non mi torna, io ho sempre usato il carattere di escape usato anche da Paoletta.
Emanuele
Re: Prima riga sovrascritta in Bash
Inviato: mer 27 apr 2011, 23:45
da sardylan
Non so come si comporta con altre shell (chiaramente scritto nel modo equivalente), ma ho voluto un po' a sistemare il tutto...
Attualmente ho questo:
Codice: Seleziona tutto
sardylan@achille.thehellnet.org [ ~ ]$ echo $PS1
\[\e[1;32m\]\u\[\e[0m\]@\[\e[1;37m\]\H\[\e[0m\] \[\e[1;36m\][\[\e[0m\] \w \[\e[1;36m\]]\[\e[0m\]$
Viene impostato tutto tramite variabili.
Un problema simile mi si verificava con l'escape finale. Alla fine, dopo varie prove ho trovato che
0m è quello giusto.
Ho anche un export di PS1 e di TERM:
Codice: Seleziona tutto
if [ -z "${TERM}" ]; then
TERM="linux"
fi
export PS1
export TERM
Re: Prima riga sovrascritta in Bash
Inviato: gio 28 apr 2011, 0:12
da hashbang
spina ha scritto:Scusa, ma se non setti la variabile PS1 tutto funziona?
Praticamente si. Infatti se evito di usare un .bashrc per caricare la configurazione della bash, tutto funziona perfettamente.
spina ha scritto:Perché se è così allora è evidente che il problema è lì, sinceramente l'uso del \e non mi torna, io ho sempre usato il carattere di escape usato anche da Paoletta.
Emanuele
Guarda io le sequenze di escape le ho applicate seguendo il wiki ufficiale di ArchLinux.
Ti posto il
link