Pagina 1 di 1
Dubbio su profile.d
Inviato: mer 14 mar 2007, 19:58
da Dani
Se creo uno script /etc/profile.d/prova.sh che ad esempio modifichi PATH aggiungendo una directory, non ottengo i risultati sperati dentro x, mentre in init 3 funziona.
In poche parole se dalla konsole di kde faccio echo $PATH la mia directory non compare nella variabile, mentre la directory compare da echo $PATH lanciato dal terminale in init 3, fuori da x...
Come mai ?
Inviato: mer 14 mar 2007, 21:16
da chrix
forse perché il tuo run level predefinito è 3??
se voui che un programma si parte all'avvio di kde mettilo in .kde/Autostart.
se invece voui lanciare uno script all'avvio mettilo in /etc/rc.d/rc.local
se voui settare un particolare path, è più pulito metterlo in ~/.bashrc se non esiste crealo
e metti dentro export PATH=$PATH:/LA_directory_CHE_VUOI
Inviato: mer 14 mar 2007, 22:18
da Dani
Non voglio modificare etc/profile e i .bashrc, perchè le "modifiche" (PATH, LD_LIBRARY_PATH e MANPATH) devono sparire quando disinstallo il pacchetto e tornare quindi come prima !
Inviato: mer 14 mar 2007, 22:31
da bloodlust
che centra il runlevel adesso. gli script in /etc/profile.d/ vengono eseguiti da /etc/profile il quale a sua volta è eseguito ad ogni invocazione della shell (ksh, bash,...) sia di login che non (mentre ~/.bashrc è eseguito solamente in shell non di login).
x dani: se apri una virtual console (ctrl+alt+Fn per intenderci) mentre sei in X ti funziona giusto? se apri un terminale da X no?
Inviato: mer 14 mar 2007, 23:02
da bloodlust
ricordati che lo script deve essere eseguibile.
Inviato: gio 15 mar 2007, 19:03
da Dani
bloodlust ha scritto:
x dani: se apri una virtual console (ctrl+alt+Fn per intenderci) mentre sei in X ti funziona giusto? se apri un terminale da X no?
Dalla console virtuale (ctrl+alt+Fn) le variabili sono ok, sia che x è avviato o meno...Se invece faccio startx, apro la Konsole, mi loggo come root le directory che avevo aggiunto alla variabile non ci sono (mentre da utente ci sono)

Inviato: gio 15 mar 2007, 23:04
da bloodlust
in /etc/profile.d/prova.sh:
da X:
Codice: Seleziona tutto
root@mørke:~# echo $PATH
/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/TEST:/usr/share/texmf/bin
e
Codice: Seleziona tutto
fra@mørke:~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/TEST:/usr/share/texmf/bin:.
non è che magari viene eseguito un altro script che reimposta la variabile di ambiente?
Inviato: gio 15 mar 2007, 23:38
da targzeta
Da man bash:
Codice: Seleziona tutto
When bash is invoked as an interactive login shell, or as a non-interac-
tive shell with the --login option, it first reads and executes commands
from the file /etc/profile, if that file exists. After reading that
file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in
that order, and reads and executes commands from the first one that
exists and is readable. The --noprofile option may be used when the
shell is started to inhibit this behavior.
e ... dal file /etc/profile ....
Codice: Seleziona tutto
for profile_script in /etc/profile.d/*.sh ; do
if [ -x $profile_script ]; then
. $profile_script
fi
done
A buon intenditor poche parole
Spina
Inviato: ven 16 mar 2007, 0:32
da bloodlust
proprio quello che ho scritto io

Inviato: ven 16 mar 2007, 19:04
da Dani
bho...io continuo a non capire...
In etc/profile, PATH è impostato così:
Codice: Seleziona tutto
# Set the default system $PATH:
PATH="/usr/local/bin:/usr/bin:/bin:/usr/X11/bin:/opt/kde/bin"
# For root users, ensure that /usr/local/sbin, /usr/sbin, and /sbin are in
# the $PATH. Some means of connection don't add these by default (sshd comes
# to mind).
if [ "`id -u`" = "0" ]; then
echo $PATH | grep /usr/local/sbin 1> /dev/null 2> /dev/null
if [ ! $? = 0 ]; then
PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH
fi
fi
E gia' da qui nel PATH di root non compariva nè usr/X11/bin, nè opt/kde/bin
Quindi sono stato costretto ad aggiungere in /root/.bashrc:
Ma vabè...Passiamo allo script in etc/profile.d/nessus.sh che contiene:
Codice: Seleziona tutto
export PATH=$PATH:/opt/nessus/sbin:/opt/nessus/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/nessus/lib
export MANPATH=$MANPATH:/opt/nessus/man
Ora, dalla konsole di kde:
Da utente:
Codice: Seleziona tutto
dani[~]$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/X11/bin:/opt/kde/bin:/opt/www/htdig/bin:/opt/nessus/sbin:/opt/nessus/bin:/usr/lib/qt/bin
dani[~]$ echo $MANPATH
/usr/local/man:/usr/man:/usr/X11R6/man:/opt/nessus/man:/usr/lib/qt/doc/man
dani[~]$ echo $LD_LIBRARY_PATH
Da root:
Codice: Seleziona tutto
root[~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11/bin:/opt/kde/bin
root[~]# echo $MANPATH
/usr/local/man:/usr/man:/usr/X11R6/man:/opt/nessus/man:/usr/lib/qt/doc/man
root[~]# echo $LD_LIBRARY_PATH
Ricapitolando, da utente PATH e MANPATH sono ok, LD_LIBRARY_PATH no.
Da root MANPATH è ok, PATH e LD_LIBRARY_PATH no.
Perchè ???????????????