Newsgroup: it.comp.os.linux.iniziare
Titolo: bashrc non viene letto al login

Dove posso iniziare a controllare per fare in modo che
al login il file ~/.bashrc venga letto.
Intendo quando per esempio faccio il login (init3)
oppure apro un terminale grafico ecc, vorrei trovarmi
come usuale il mio ambiente cone variabili aliases ecc
tutti attivi senza dover digitare a mano:
. .bashrc
Non riesco a capire perch� mai non debba venire letto:
______________
$ ls -l .bash*
-rw------- 1 joe users 7847 2010-10-24 17:13 .bash_history
-rw-r--r-- 1 joe users   21 2010-10-24 17:13 .bash_profile
-rw-r--r-- 1 joe users  200 2010-10-24 17:16 .bashrc
____________________________________________________
$ cat .bashrc
clear
cat <<.
Hi There!  WellCome...
This is   $HOSTNAME
Hardware: $(uname -i) $(uname -m)
          $(uname -p)
OS:       $(cat /etc/slax-version)
          $(uname -o) (release $(uname -r))
.
____________________________________________
cat .bash_profile
source $HOME/.bashrc
--------------------
Spero che quanto riportato possa essere utile.
Quella che ho fatto sopra � una prova tanto per vedere
se viene letto. Ma a quanto pare direi di no...
Grazie in anticipo.

 Non riesco a capire perch� mai non debba venire letto:
non ho capito bene cosa fai tu, ma se fai partire un desktop
environment da un display manager spiegami perch� i file che la shell
legge al login dovrebbero essere letti se non fai un vero e proprio
login...
non so cosa si possa fare con kdestart o gnomesession (non sono
neanche sicuro che si chiamino cos�...) ma con startx e parenti 
io metto in ~/.xsession
[ -z $LOGGEDIN ] && source $HOME/.bash_profile
in $HOME/.bash_profile metto
export LOGGEDIN=1
[ -f $HOME/.bashrc ] && source $HOME/.bashrc
e infine in $HOME/.bashrc metto
[ -f /etc/bashrc ]   && source /etc/bashrc
se il tuo "login grafico" non legge .xsession (ne dubito, ma non lo so
e non mi interessa saperlo) devi capire (RTFM, se ci sono) come
altrimenti modificare l'environment in cui i processi successivi
(xterm, firefox, emacs, ... c'� altro?) vengono eseguiti
-- 
la lenza penzola -- PMF, in IHC


Facebook: Massimo Bacilieri

 al login il file ~/.bashrc venga letto.
Io l'ho fatta molto semplice (copiata da non ricordo quale distro)
# cat .bash_profile 
source ~/.bashrc
$ cat .bashrc
# Check for an interactive session
[ -z "$PS1" ] && return
alias ls='ls --color=auto'
alias lsm='ls -l --block-size=M'
export PS1='\[\e[0;32m\]\u@\h \W]\$\[\e[0m\] '
setxkbmap it
volendo esagerare...
# cat .bashrc
alias ls="ls --color"
alias lsm="ls -l --block-size=M"
export PS1='\[\e[0;31m\][\u@\h \W]\$\[\e[0m\] '
alias uninstaller="wine uninstaller"
alias Aggiornamento="yaourt -Syu"
alias Cerca="yaourt -Ss"                                                                                                                      
alias Installa="yaourt -S"
alias DEBUG="tail -f /var/log/kernel.log"
export BROWSER="/usr/bin/firefox"
export WINEPREFIX="$HOME/.wine"
ntpdate  
it.pool.ntp.org
-- 
last-kernel-inside

 se il tuo "login grafico"
Il problema lo riscontro anche in init3 niente login
grafico.
Comunque grazie.

 ~/.bashrc.
Il punto è questo, nel mio caso non viene letto
nulla... a perte le configurazioni globali /etc/profile
ecc.

 configurazioni globali /etc/profile ecc.
Facciamo chiarezza e partiamo dall'inizio: stai avviando una shell di
login o una shell interattiva, tanto per capirci? E la shell ï¿œ bash o
ï¿œ un'altra?


 Grazie in anticipo.
di nulla.
ciao
michele

 e i tuoi dubbi spariranno.
Saprai bene quanto man bash sia corposo.
In questa situazione avevo bisogno di uno sforzo
maggiore da parte di chi risponde (perquanto
graditissima qualunque risposta e grazie in ogni caso).
Infatti la configurazione non si � rivelata essere sana
e tutta la documentazione che ho letto non specificava
la situazione "sballata" in cui si trovava il mio
utente.
Il problema avveniva per l'utente semplice "joe" con
cui lavoro di solito. Invece l'utente "root" non aveva
questa anomalia, per lui al login veniva eseguito
regolarmente .bash_profile e .bashrc a seconda dei
casi.
Quindi "l'anomalia" era esclusivamente una prerogativa
dell'utente "joe".
Dopo aver verificato questo fatto facendo qualche prova
da root, ho pensato di andare a verificare cosa
cambiava tra i due utenti sbirciando in /etc/passwd.
Il superutente aveva questa faccia:
root:x:0:0::/root:/bin/bash
Mentre il povero joe:
joe:x:1003:100::/home/joe
Insomma il problema di fondo non riguardava la shell
bash e la sua configurazione ma la specifica della
shell da utilizzare di default per l'utente joe, che
come si vede sopra mancava.
Per cui, penso bastasse aggiungerla, ho modificato
cos�:
joe:x:1003:100::/home/joe:/bin/bash
Sembra sufficente per far tornare i conti.
Adesso al login viene eseguito .bash_profile, come ci
si aspetta per la shell di login.
digitando poi bash ed ottenendo una shell interattiva
semplice viene eseguito solo ~/bashrc, come ci si
aspetta.
L'unica cosa che non mi torna � che avviando il
terminale grafico "konsole" viene eseguit .bash_profile
come se fosse una shell di login. Ma bisogna vedere
come viene eseguito quel programma e cosa eventualmente
richiama in pi�.
Siccome in questo topic ho ricevuto diverse risposte
oltre ringraziare vorrei aggiungere che alcune sono
errate, per esempio la prima di "giacomo boffi" �
errata. Anche in init5 avviando in grafica, quando si
apre un terminale grafico vengono eseguiti i file di
configurazione di bash specifici dell'utente, almeno
almeno .bashrc, nel caso di konsole vine poi eseguito
anche .bash_profile, almeno sul mio sistema.
La shell pu� essere di 3 tipi:
-
- shell di login (interattiva)
- shell interattiva (non di login)
- shell non interattiva
le prime due eseguono rispettivamente ~/.bash_profile e
~/.bashrc.
Pertanto anche in sessione grafica avviata aprendo un
xterm e richiamando di conseguenza una shell
interattiva, viene letto ed esegito .bashrc se esiste.
Nota per me:
andare a vedere come si usa correttamente useradd ed
eventualmente come si creano gli utenti a mano
modificando i file di configurazione /etc/passwd e
parenti.
Grazie ancora delle numerose risposte.
Saluti

 � un'altra?
Allora, per chiarire ancora (ma mi pareva di aver
spiegato abbastanza dettagliatamente...):
1- Quando avvio il sistema (slax-6.1.2) viene
   mostrato il login testuale in console perch� ho
   impostato l'avvio in init3 piuttosto che init5.
   In questa situazione X non � avviato ovviamente e il
   login si fa in console.
   Effettuato il login ci si trova in una shell di
   login in quanto � a prima che si vede.
   Cosa diavolo accade quando si ottiene questa shell
   (che � bash, niente di esotico). Accade che viene
   eseguito ~/.bash_profile se esiste.
   Questo avviene quando non ci sono problemi e la
   situazione � configurata bene.    Nel mio caso
   evidentemente c'� qualcosa che non torna perch� quel
   file non viene letto ne tantomeno eseguito,
   nonostante esista ed abbia permessi in regola.
2- Se a questo punto digito "bash" mi trover� in una
   shell interattiva "non di login".
   Cosa � successo?
   Quando va tutto bene viene letto ed eseguito ~/.bashrc.
   Nel mio caso non viene letto alcunch� eseguito nulla.
3- Poniamo di avviare poi il server grafico con
   "startx", nel mio caso si avvia kde-3.5.10 che � il
   default per slax. Ok ora apro un terminale grafico
   lanciando "konsole".
   konsole esegue "bash" restituendo appunto una shell.
   Di che tipo di shell si tratta?
   Sinceramente non ne ho idea, immagino che sia una
   shell interattiva "non di login". Per� posso
   confermare (col senno di poi, in quanto ho risolto)
   che verrebbe eseguito il file .bash_profile qualora
   la configurazione fosse "sana" (...quindi si ottiene
   una shell di login? oppure una shell interattiva non
   di login e konsole in aggiunta esegue il file
   .bash_profile in di pi�, lascio aperta la
   questione...)
   Ovviamente nel mio caso continua a non essere
   eseguito alcunch�... Perch� evidentemente
   c'� qualcosa che manca.

    c'è qualcosa che manca.
Prova un po' a postare i tuoi .bashrc e .bash_profile (o .profile) che
ci guardiamo...


 ci guardiamo...
Anzi... vuoi forse dire che sono *davvero* questi?
$ cat .bashrc
clear
cat <<.
Hi There!  WellCome...
This is   $HOSTNAME
Hardware: $(uname -i) $(uname -m)
          $(uname -p)
OS:       $(cat /etc/slax-version)
          $(uname -o) (release $(uname -r))
.
$ cat .bash_profile
source $HOME/.bashrc
??? Se è così nulla di strano che non ti funzioni niente... sono file
che non fanno niente, appunto!


 che non fanno niente, appunto!
Certo che sono quelli. Sei proprio sicuro che non
facciano nulla?
Prova a farti un backup dei tuoi e copiarti questi
nella tua home. Poi fai logout e login e prova ad
aprire qualche terminale...
Ad ogni modo probabilmente non hai letto alcuni miei ultimi
posts. In particolare quello dove ho spiegato cosa
esattamente non fosse corretamente configurato.
Diciamo che la configurazione della bash non c'entrava
nulla, come immaginavo.

 dover duplicare i file.
Dipende come vine lanciato il terminale, i seguenti
sono fatti di cui sono sicuro e non opinioni:
1- quando lancio konsole cliccando l'icona in kde, parte
   una shell e viene eseguito .bash_profile.
   Me ne accorgo perch� ho modificato quel file
   mettendovi un messaggio di saluto (cat <<eof ecc) e
   togliendoli da .bashrc cos� solo se viene eseguito
   bash_profile vedo quel messaggio.
   Ora come dicevo, lanciando konsole dall'icona mi
   appare il messaggio di saluto. Ovviamente � stato
   eseguito bash_profile.
a- La domanda era si tratta di una shell di login?
b- Oppure di una shell interattiva?
La risposta era "a" e me ne sono accorto andando a
vedere con che comando viene lanciato "konsole"
cliccando:
konsole --ls
che se andiamo a vedere dall'help:
__________________________________
joe@slax:~$ konsole --help|grep ls
--ls                      Avvia una shell di login
---------------------------------------------------
Ecco spiegato perch� aprendo un terminale grafico vedo
il messaggio di saluto impostato per il login.
Questo accade ora che ho risolto l'inghippo che vi era
prima e che ripeto, non aveva nulla a che vedere con
bash_profile e bashrc in se.
Ci tentevo a chiarire alcuni punti di quanto avevi
detto per sgombrare un po' di dubbi ed imprecisioni.
Ad ogni modo grazie per la disponibilit�.

 facciano nulla?
No beh, stampano un motd, ma altro non fanno.
Il tuo problema erano gli alias che non si configuravano o avevo capito
male?


 o avevo capito male?
Rileggi il primo messaggio del topic, mi sembra chiaro.
Il problema � che non venivano eseguiti, pertanto niene
messaggio, niente alias, niente di niente insomma.
Il messaggio l'avevo messo nel bashrc o profile ecc,
solo per vedere in modo lampante ed immediato se veniva
eseguito o no... tutto l�.
Spero che tu abbia letto anche gli altri miei ultimi
messaggi di questa discussione.

messaggio, niente alias, niente di niente insomma.
Io non ho letto quasi niente di questo 3d, ma guarda:
===================
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.
..................
............
==========================
dunque la precedenza e'
~/.bash_login
~/.bash_profile
~/.profile
la queeze usa .profile la etch usava invece se non ricordo
male .bash_profile.
Ma c'e' di piu': inspiegabilmente - per me! - non ci scrive
quasi nulla perche' include il comando di eseguire
quest'altro file:
=========================================
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
# don't put duplicate lines in the history. See bash(1) for more options
......................
...............
=======================
nel quale mette tutto quel che dorebbe stare in .profile
e pero' lo fa eseguire (vedi prima istruzione) solo dalle
shell di login.. bah chi li capisce e' bravo!
Io li ho cambiati e sono entrambi praticamente vuoti,
perche' faccio eseguire tutto con questo: /etc/profile
uguale per tutti gli utenti.. tanto son sempre io.
Ma tu come fai ad avere problemi? forse e' perche' confondi
la console coi terminali di X? in X la shell dei terminali
esegue solo .bashrc, quindi regolati.
Eccoli cmq i miei:
$: cat .profile
PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/home/dalet/bin"
export PATH
NNTPSERVER='
nntp.aioe.org
'
export NNTPSERVER
echo '.profile'
echo
/usr/games/fortune
echo
$: cat .bashrc
echo ".bashrc"
echo
-- 
Saluti, Dalet

 echo
Cos� per� quando tu apri un terminale grafico (bisogna
sempre vedere come lo apri eh...) ed ottieni una shell
interattiva non di login, non verr� eseguito nulla.
In particolare non vine definito il PATH che immagino
vorrai avere come definito in .profile.
Per esempio se apri un terminale grafico non avrai
definita la varibile NNTPSERVER, invece probabilmente
ti serve... questo perch� all'apertura del terminale
potrebbe venire eseguito .bashrc e non .profile.
Dico potrebbe sempre perch� bisogna vedere come viene
lanciato il terminale.
Come hai detto utilizzi il file /etc/profile pertanto
NNTPSERVER se l'hai definita l�, allora risulter� ok
lo stesso... ma a quesl punto non occerrer� pi�
definirla in .profile...
Insomma la questione � piuttosto semplice alla fine.
Riguardo il mio problema come leggerai, la questione
era pi� spinosa e non aveva ache fare con questi files.

era più spinosa e non aveva ache fare con questi files.
Bah.. mi stai incuriosendo ma se questi file di bash non
c'entrano allora non potro' aiutarti minimamente perche'
io di X e KDE non ci capisco nulla.. per dire: scommetto
che TUTTI sanno come cambiare la musichetta d'avvio di KDE,
be' prima era semplice adesso hanno cambiato tutto e non
l'ho trovato in nessun modo:-(  e non e' neppure antipatica
eh, solo che e' lunghissima.. se fosse quella di Uindous a
non potersi cambiare penso che avrei gia' preso a martellate
le casse distruggendole in un raptus di disperazione.
-- 
Saluti, Dalet

 io di X e KDE non ci capisco nulla..
In effetti non c'entra nulla kde. ne' X.  ;)
Saluti!

 echo
Ripeto, mi pare che lo avessi gi� fatto notare.
Con questa soluzione che mostri, ottieni il PATH
personalizzato solo nelle shell di login, quelle
interattive prendono la configurazione generale
definita in /etc/profile, senza che venga aggiunto
nulla.
Non ha molto senso a mio avviso. Cio� a quel punto
� pi� sensato mettere tutto in /etc/profile e dare
rm ~/.bashrc ~/.profile
Spero di essermi spiegato...

 parenti.
se proprio devi...
man vipw
è l'unico comando che ti serve
ciao
michele

 � l'unico comando che ti serve
Bene.
Ciao.

.bashrc. Perchè?
Prova a dare un'occhiata qui:
http://wiki.debian.org/DotFiles
-- 
(@_  | Maurizio Loreti
//\  |
V_/_ | EMail/ROT13: Znhevmv...@tznvy.pbz

 
http://wiki.debian.org/DotFiles
In quel link non viene descritto in modo esplicito il
particolare che mi dava il problema.
L'inghippo stava nel /etc/passwd ed era legato alla
creazione dell'utente "joe" senza la specifica di quale
shell dovesse utilizzare. Vedi messaggi precedenti di
questo ramo della discussione.