Prima riga sovrascritta in Bash

Se avete problemi con l'installazione e la configurazione di Slackware postate qui. Non usate questo forum per argomenti generali... per quelli usate Gnu/Linux in genere.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware, se l'argomento è generale usate il forum Gnu/Linux in genere.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
hashbang
Packager
Packager
Messaggi: 2000
Iscritto il: ven 4 giu 2010, 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS | OpenBSD
Località: Lecce / Bergamo
Contatta:

Prima riga sovrascritta in Bash

Messaggio 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?

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2902
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 14.2
Kernel: 4.4.19
Desktop: KDE4
Località: Bulagna
Contatta:

Re: Prima riga sovrascritta in Bash

Messaggio da 414N »

Senza informazioni specifiche è un po' dura...
Quale modifica hai fatto, di preciso? Hai modificato la variabile d'ambiente PS1?

hashbang
Packager
Packager
Messaggi: 2000
Iscritto il: ven 4 giu 2010, 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS | OpenBSD
Località: Lecce / Bergamo
Contatta:

Re: Prima riga sovrascritta in Bash

Messaggio 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 '

Avatar utente
joseph
Linux 2.x
Linux 2.x
Messaggi: 205
Iscritto il: lun 14 giu 2010, 23:50
Slackware: 13.37
Kernel: 3.2.9
Desktop: xfce
Località: Salerno

Re: Prima riga sovrascritta in Bash

Messaggio 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 :D

hashbang
Packager
Packager
Messaggi: 2000
Iscritto il: ven 4 giu 2010, 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS | OpenBSD
Località: Lecce / Bergamo
Contatta:

Re: Prima riga sovrascritta in Bash

Messaggio 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 :D
L'avevo già detto ;)
Senza il .bashrc il problema non si presenta.

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun 3 set 2007, 21:20
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey
Località: Cuasso al Monte (VA)

Re: Prima riga sovrascritta in Bash

Messaggio 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=...

hashbang
Packager
Packager
Messaggi: 2000
Iscritto il: ven 4 giu 2010, 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS | OpenBSD
Località: Lecce / Bergamo
Contatta:

Re: Prima riga sovrascritta in Bash

Messaggio da hashbang »

Non va. Ho provato il suggerimento di Mario, ma il problema non si risolve.

Avatar utente
414N
Iper Master
Iper Master
Messaggi: 2902
Iscritto il: mer 13 feb 2008, 16:19
Slackware: 14.2
Kernel: 4.4.19
Desktop: KDE4
Località: Bulagna
Contatta:

Re: Prima riga sovrascritta in Bash

Messaggio 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?

hashbang
Packager
Packager
Messaggi: 2000
Iscritto il: ven 4 giu 2010, 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS | OpenBSD
Località: Lecce / Bergamo
Contatta:

Re: Prima riga sovrascritta in Bash

Messaggio 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?

hashbang
Packager
Packager
Messaggi: 2000
Iscritto il: ven 4 giu 2010, 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS | OpenBSD
Località: Lecce / Bergamo
Contatta:

Re: Prima riga sovrascritta in Bash

Messaggio 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. :-k

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"

Avatar utente
Paoletta
Staff
Staff
Messaggi: 3974
Iscritto il: lun 25 apr 2005, 0:00
Slackware: 14.2 - 64 bit
Desktop: fluxbox
Località: Varese

Re: Prima riga sovrascritta in Bash

Messaggio 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)

hashbang
Packager
Packager
Messaggi: 2000
Iscritto il: ven 4 giu 2010, 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS | OpenBSD
Località: Lecce / Bergamo
Contatta:

Re: Prima riga sovrascritta in Bash

Messaggio 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') "

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6563
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: Prima riga sovrascritta in Bash

Messaggio 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
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà 

Avatar utente
sardylan
Linux 3.x
Linux 3.x
Messaggi: 993
Iscritto il: mar 24 apr 2007, 9:21
Nome Cognome: Luca Cireddu
Slackware: current 64bits
Kernel: 3.16
Desktop: KDE 4.14
Distribuzione: Debian - CLFS
Località: Cagliari
Contatta:

Re: Prima riga sovrascritta in Bash

Messaggio 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

hashbang
Packager
Packager
Messaggi: 2000
Iscritto il: ven 4 giu 2010, 10:27
Nome Cognome: Luca De Pandis
Distribuzione: macOS | OpenBSD
Località: Lecce / Bergamo
Contatta:

Re: Prima riga sovrascritta in Bash

Messaggio 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

Rispondi