profili bash e path predefiniti
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.
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.
- -sf
- Linux 2.x
- Messaggi: 209
- Iscritto il: ven 15 lug 2011, 1:20
- Slackware: 13.37
- Kernel: 2.6.37.6-smp
- Desktop: KDE
profili bash e path predefiniti
Salve a tutti, ho combinato qualche casino con i path predefiniti di bash
Sostanzialmente qualsiasi comando io dia mi risponde con un bel "command not found".
Ho cercato informazioni ma il risultato è stato quello di confondermi ulteriormente le idee; partendo dall'inizio ho trovato sotto /etc il file "profile" che, da quanto ho capito, contiene una serie di informazioni fra le quali i path predefiniti.
Oltre a questo ho trovato fonti che mi parlavano di un ".bash_profile", contenuto nella propria home e con una funzione analoga a quello descritto poco sopra.
Altro file simile: ".bashrc".
Ora perdonate la mia niubbagine... ma nel momento in cui io da shell (bash) vado a dare per esempio un "ls", lui va ricercare tal comando in /usr/bin ed esegue quello che trova riportandomi l'output a schermo, giusto? Questo percorso lo stabilisce quale file? ".bash_profile", "profile" (in /etc) o quale altro?
Sono venuto inoltre a conoscenza di un fantomatico comando "source", qual'è la sua funzione?
Grazie
Sostanzialmente qualsiasi comando io dia mi risponde con un bel "command not found".
Ho cercato informazioni ma il risultato è stato quello di confondermi ulteriormente le idee; partendo dall'inizio ho trovato sotto /etc il file "profile" che, da quanto ho capito, contiene una serie di informazioni fra le quali i path predefiniti.
Oltre a questo ho trovato fonti che mi parlavano di un ".bash_profile", contenuto nella propria home e con una funzione analoga a quello descritto poco sopra.
Altro file simile: ".bashrc".
Ora perdonate la mia niubbagine... ma nel momento in cui io da shell (bash) vado a dare per esempio un "ls", lui va ricercare tal comando in /usr/bin ed esegue quello che trova riportandomi l'output a schermo, giusto? Questo percorso lo stabilisce quale file? ".bash_profile", "profile" (in /etc) o quale altro?
Sono venuto inoltre a conoscenza di un fantomatico comando "source", qual'è la sua funzione?
Grazie
- targzeta
- Iper Master
- Messaggi: 6631
- 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: profili bash e path predefiniti
Il percorso dove andare a pescare i programmi viene determinato dalla variabile d'ambiente PATH (dai 'echo $PATH'). Per capire come viene settata questa variabile e da chi, eventualmente viene modificata, leggi il manuale della bash, dove, all'inizio, cita:
Quante cose ci dice un manuale ,
Emanuele
Le shell di login sono quelle generalmente invocate al tuo login, ma più in generale:bash(1) ha scritto: When bash is invoked as an interactive login shell, or as a non-interactive 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.
When a login shell exits, bash reads and executes commands from the file ~/.bash_logout, if it exists.
When an interactive shell that is not a login shell is started, bash reads and executes commands from ~/.bashrc, if that file exists. This may be inhibited by using the --norc option. The --rcfile file option will force bash to read and execute commands from file instead of ~/.bashrc.
Le shell interattive invece sono, ad esempio, quelle che hai nei terminali virtuali sotto X:bash(1) ha scritto:A login shell is one whose first character of argument zero is a -, or one started with the --login option.
Per finire, il comando 'source', sempre dal man della bash:bash(1) ha scritto: An interactive shell is one started without non-option arguments and without the -c option whose standard input and error are both connected to terminals (as determined by isatty(3)), or one started with the -i option. PS1 is set and $- includes i if bash is interactive, allowing a shell script or a startup file to test this state.
Codice: Seleziona tutto
source filename [arguments]
Read and execute commands from filename in the current shell
environment and return the exit status of the last command
executed from filename. If filename does not contain a slash,
file names in PATH are used to find the directory containing
filename. The file searched for in PATH need not be executable.
When bash is not in posix mode, the current directory is searched
if no file is found in PATH. If the sourcepath option to the
shopt builtin command is turned off, the PATH is not searched.
If any arguments are supplied, they become the positional parameters
when filename is executed. Otherwise the positional parameters
are unchanged. The return status is the status of the last command
exited within the script (0 if no commands are executed), and
false if filename is not found or cannot be read.
Emanuele
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
-
- Master
- Messaggi: 1645
- Iscritto il: lun 16 lug 2007, 17:39
- Slackware: 15.0 64bit
- Kernel: 5.15.27
- Desktop: kde
- Località: Roma
Re: profili bash e path predefiniti
scusate se vado forse un po' offtopic, ma colgo l'occasione per una domanda che mi hanno fatto e a cui non ho saputo dare risposta
qualcuno di voi sa perchè quantomento in slackware(nn so se è cosi' per tutte le distro), l'utente root non ha nel path la directory corrente mentre invece un utente normale si?!!??!!?
questioni di sicurezza o cosa?!?!?!?!
qualcuno di voi sa perchè quantomento in slackware(nn so se è cosi' per tutte le distro), l'utente root non ha nel path la directory corrente mentre invece un utente normale si?!!??!!?
questioni di sicurezza o cosa?!?!?!?!
- Paoletta
- Staff
- Messaggi: 3975
- Iscritto il: lun 25 apr 2005, 0:00
- Slackware: 14.2 - 64 bit
- Desktop: fluxbox
- Località: Varese
Re: profili bash e path predefiniti
in /etc/profile:miklos ha scritto:scusate se vado forse un po' offtopic, ma colgo l'occasione per una domanda che mi hanno fatto e a cui non ho saputo dare risposta
qualcuno di voi sa perchè quantomento in slackware(nn so se è cosi' per tutte le distro), l'utente root non ha nel path la directory corrente mentre invece un utente normale si?!!??!!?
questioni di sicurezza o cosa?!?!?!?!
Codice: Seleziona tutto
# For non-root users, add the current directory to the search path:
if [ ! "`id -u`" = "0" ]; then
PATH="$PATH:."
fi
- -sf
- Linux 2.x
- Messaggi: 209
- Iscritto il: ven 15 lug 2011, 1:20
- Slackware: 13.37
- Kernel: 2.6.37.6-smp
- Desktop: KDE
Re: profili bash e path predefiniti
Io però adesso mi ritrovo con una shell che non riconosce alcun comando oltre a "ls" o "cd".... non riesco nemmeno a far partire X o consultare un "man"
Come reimposto il path?
Mi ricordo di un "export" ma non so cosa passargli
Grazie
Come reimposto il path?
Mi ricordo di un "export" ma non so cosa passargli
Grazie
-
- Master
- Messaggi: 1645
- Iscritto il: lun 16 lug 2007, 17:39
- Slackware: 15.0 64bit
- Kernel: 5.15.27
- Desktop: kde
- Località: Roma
Re: profili bash e path predefiniti
cosa hai fatto di preciso?!?!?!comunque per iniziare fai-sf ha scritto:Salve a tutti, ho combinato qualche casino con i path predefiniti di bash
Codice: Seleziona tutto
env | grep PATH
altra prova del 9, vedi se in una shell non grafica e con un altro utente i percorsi funzionano correttamente.
se la risposta è affermativa.. allora il casino è localizzato nel tuo utente e quindi controlla i vari .bashrc e .bash_profile che eventualmente hai nella tua home(spina ha spiegato egregiamente cosa sono e come funzionano).
se vedi qualcosa tipo
Codice: Seleziona tutto
export PATH=/pippo
se lo hai fatto volontariamente per aggiungere nuovi percorsi dove cercare gli eseguibili, tieni presente che devi anche esportare il vecchio path. in altre parole:
Codice: Seleziona tutto
export PATH=$PATH:/pippo
- targzeta
- Iper Master
- Messaggi: 6631
- 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: profili bash e path predefiniti
Sì, è per questioni di sicurezza. Ci sono due casi:miklos ha scritto:scusate se vado forse un po' offtopic, ma colgo l'occasione per una domanda che mi hanno fatto e a cui non ho saputo dare risposta
qualcuno di voi sa perchè quantomento in slackware(nn so se è cosi' per tutte le distro), l'utente root non ha nel path la directory corrente mentre invece un utente normale si?!!??!!?
questioni di sicurezza o cosa?!?!?!?!
- directory corrente in cima al PATH: è il caso peggiore perché qualsisi utente potrebbe creare un comando malizioso chiamandolo, ad esempio '/tmp/ls', e se l'amministratore di sistema entra in /tmp ed esegue 'ls', ecco che viene eseguito il comando malizioso.
- directory corrente in mezzo o in fine PATH: in questi casi il rischio è minore, però pensa ad errori di digitazione o ad alias abituali dell'amministratore che sulla macchina non esistono. In questo caso un programma '/tmp/l' potrebbe essere eseguito dall'amministratore se entra in '/tmp' e sbaglia a digitare 'ls'. Oppure un programma '/tmp/ll' dove l'amministratore usa un alias 'll=ls -l' laddove sulla macchina non esiste.
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
- targzeta
- Iper Master
- Messaggi: 6631
- 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: profili bash e path predefiniti
RTFM . Alla seconda te lo dovevo!!!-sf ha scritto:Io però adesso mi ritrovo con una shell che non riconosce alcun comando oltre a "ls" o "cd".... non riesco nemmeno a far partire X o consultare un "man"
Come reimposto il path?
Mi ricordo di un "export" ma non so cosa passargli
Grazie
Emanuele
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
-
- Master
- Messaggi: 1645
- Iscritto il: lun 16 lug 2007, 17:39
- Slackware: 15.0 64bit
- Kernel: 5.15.27
- Desktop: kde
- Località: Roma
Re: profili bash e path predefiniti
grazie 1000spina ha scritto:Sì, è per questioni di sicurezza. Ci sono due casi:
directory corrente in cima al PATH: è il caso peggiore perché qualsisi utente potrebbe creare un comando malizioso chiamandolo, ad esempio '/tmp/ls', e se l'amministratore di sistema entra in /tmp ed esegue 'ls', ecco che viene eseguito il comando malizioso.
directory corrente in mezzo o in fine PATH: in questi casi il rischio è minore, però pensa ad errori di digitazione o ad alias abituali dell'amministratore che sulla macchina non esistono. In questo caso un programma '/tmp/l' potrebbe essere eseguito dall'amministratore se entra in '/tmp' e sbaglia a digitare 'ls'. Oppure un programma '/tmp/ll' dove l'amministratore usa un alias 'll=ls -l' laddove sulla macchina non esiste.
Emanuele
- -sf
- Linux 2.x
- Messaggi: 209
- Iscritto il: ven 15 lug 2011, 1:20
- Slackware: 13.37
- Kernel: 2.6.37.6-smp
- Desktop: KDE
Re: profili bash e path predefiniti
Sono iniziati i problemi nel momento in cui ho installato il pacchetto jdk e modificato i questi famosi PATH su suggerimenti esterni (probabilmente non troppo corretti )
Comunque sono riuscito a modificare il "profile" in /etc riportandolo allo stato originario ed a decomentare tutto nel file ~/.bash_profile (non andava nemmeno rm e non potevo eliminare nulla).
Per il momento ho risolto!
Se davo un "man comando", mi restituiva "man: command not found"
Ora non mi resta che capire come impostare correttamente i percorsi...
Ma mi leggerò il manuale o spina mi picchia
Comunque sono riuscito a modificare il "profile" in /etc riportandolo allo stato originario ed a decomentare tutto nel file ~/.bash_profile (non andava nemmeno rm e non potevo eliminare nulla).
Per il momento ho risolto!
Non potevo nemmeno volendo!spina ha scritto:RTFM . Alla seconda te lo dovevo!!!
Emanuele
Se davo un "man comando", mi restituiva "man: command not found"
Ora non mi resta che capire come impostare correttamente i percorsi...
Ma mi leggerò il manuale o spina mi picchia
-
- Master
- Messaggi: 1645
- Iscritto il: lun 16 lug 2007, 17:39
- Slackware: 15.0 64bit
- Kernel: 5.15.27
- Desktop: kde
- Località: Roma
Re: profili bash e path predefiniti
perchè hai fatto una cosa del genere!?!?!?-sf ha scritto:Sono iniziati i problemi nel momento in cui ho installato il pacchetto jdk e modificato i questi famosi PATH su suggerimenti esterni (probabilmente non troppo corretti )
te lo chiedo visto che il pacchetto della jdk ufficiale (quello che trovi in extra per intenderci) aggiusta lui le cose.
di solito il file /etc/profile non andrebbe toccato, se vuoi un posto dove poter modificare queste cose in modo generico per tutti gli utenti esiste la directory /etc/profile.d
se ci spulci dentro troverai tanti file eseguibili. questi file vengono eseguiti tutte le volte che apri un terminale.
nel caso da te indicato, il pacchetto ufficiale crea un file chiamato jdk.sh(o comunque qualcosa del genere) che aggiusta il path come dovrebbe essere per poter trovare gli eseguibili java(aprilo e vedi come fa).
- -sf
- Linux 2.x
- Messaggi: 209
- Iscritto il: ven 15 lug 2011, 1:20
- Slackware: 13.37
- Kernel: 2.6.37.6-smp
- Desktop: KDE
Re: profili bash e path predefiniti
avevo installato il pacchetto in /extra ma non riuscivo comunque a far girare nulla.
il jdk.sh che mi citi viene avviato da solo o deve essere fatto manualmente? forse il mio problema sta proprio li in quanto non ho mai lanciato quello .
Grazie per la dritta comunque
il jdk.sh che mi citi viene avviato da solo o deve essere fatto manualmente? forse il mio problema sta proprio li in quanto non ho mai lanciato quello .
Grazie per la dritta comunque
-
- Master
- Messaggi: 1645
- Iscritto il: lun 16 lug 2007, 17:39
- Slackware: 15.0 64bit
- Kernel: 5.15.27
- Desktop: kde
- Località: Roma
Re: profili bash e path predefiniti
viene eseguito ogni volta che fai login (o, se sei in ambiente grafico, fai partire un terminale)-sf ha scritto:il jdk.sh che mi citi viene avviato da solo o deve essere fatto manualmente?
probabilmente hai tentato di lanciare un comando java subito dopo aver installato il pacchetto, non hai trovato nulla perchè avresti dovuto chiudere e riavviare il terminale.
in questo modo lo script in questione sarebbe stato eseguito e il path aggiornato.
comunque questo è un caso particolare, perchè la jdlk non si installa nei percorsi dove normalmente trovi gli eseguibili /bin /usr/bin e via dicendo, il pacchetto è contenuto tutto in un unica directory (con binari e librerie)
proprio per questo motivo si ha la necessità di aggiungere percorsi al path del sistema (un po' come si fa con windows quando installi la jdk).
l'unico modo per rendere universale questa aggiunta è creare degli script nel percorso che ti ho indicato io, perchè solo cosi' sei sicuro che qualsiasi utente, non appena si logga ha il path aggiornato
spero di essere stato abbastanza chiaro
ciau
- -sf
- Linux 2.x
- Messaggi: 209
- Iscritto il: ven 15 lug 2011, 1:20
- Slackware: 13.37
- Kernel: 2.6.37.6-smp
- Desktop: KDE
Re: profili bash e path predefiniti
Chiarissimo!
Grazie mille
Grazie mille
- 414N
- Iper Master
- Messaggi: 2922
- Iscritto il: mer 13 feb 2008, 16:19
- Slackware: 15.0
- Kernel: 5.15.19
- Desktop: KDE5
- Località: Bulagna
- Contatta:
Re: profili bash e path predefiniti
Se il PATH è sballato e non vengono trovati i comandi che digiti, puoi sempre usare il path assoluto, in modo che la shell non debba cercare il comando all'interno di PATH. In questo caso, /usr/bin/rm e /usr/bin/man.-sf ha scritto:(non andava nemmeno rm e non potevo eliminare nulla)
[...]
Se davo un "man comando", mi restituiva "man: command not found"
Puoi sempre aggiustare temporaneamente la questione al volo tramite un
Codice: Seleziona tutto
export PATH=/usr/bin:$PATH
Senza chiudere e riavviare cose (alla Windows ), bastava eseguiremiklos ha scritto:probabilmente hai tentato di lanciare un comando java subito dopo aver installato il pacchetto, non hai trovato nulla perchè avresti dovuto chiudere e riavviare il terminale.
in questo modo lo script in questione sarebbe stato eseguito e il path aggiornato.
Codice: Seleziona tutto
. /etc/profile
Codice: Seleziona tutto
source /etc/profile