Dubbio su profile.d

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.
Rispondi
Dani
Linux 4.x
Linux 4.x
Messaggi: 1447
Iscritto il: mer 26 apr 2006, 1:52
Desktop: gnome
Distribuzione: arch

Dubbio su profile.d

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

Avatar utente
chrix
Linux 2.x
Linux 2.x
Messaggi: 375
Iscritto il: gio 30 set 2004, 0:00
Località: Trieste
Contatta:

Messaggio 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

Dani
Linux 4.x
Linux 4.x
Messaggi: 1447
Iscritto il: mer 26 apr 2006, 1:52
Desktop: gnome
Distribuzione: arch

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

bloodlust
Linux 3.x
Linux 3.x
Messaggi: 523
Iscritto il: mar 14 feb 2006, 12:02
Slackware: -1
Località: it_IT

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

bloodlust
Linux 3.x
Linux 3.x
Messaggi: 523
Iscritto il: mar 14 feb 2006, 12:02
Slackware: -1
Località: it_IT

Messaggio da bloodlust »

ricordati che lo script deve essere eseguibile.

Dani
Linux 4.x
Linux 4.x
Messaggi: 1447
Iscritto il: mer 26 apr 2006, 1:52
Desktop: gnome
Distribuzione: arch

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

bloodlust
Linux 3.x
Linux 3.x
Messaggi: 523
Iscritto il: mar 14 feb 2006, 12:02
Slackware: -1
Località: it_IT

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

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
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

Messaggio 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

bloodlust
Linux 3.x
Linux 3.x
Messaggi: 523
Iscritto il: mar 14 feb 2006, 12:02
Slackware: -1
Località: it_IT

Messaggio da bloodlust »

proprio quello che ho scritto io :)

Dani
Linux 4.x
Linux 4.x
Messaggi: 1447
Iscritto il: mer 26 apr 2006, 1:52
Desktop: gnome
Distribuzione: arch

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

Rispondi