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:

Codice: Seleziona tutto

#!/bin/sh
export PATH=$PATH:/TEST
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:

Codice: Seleziona tutto

export PATH=$PATH:/usr/X11/bin:/opt/kde/bin
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è ???????????????