Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
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.
cosa cambia tra le 2 versioni ?
Cosa è meglio usare ?
Poi non ho capito l'utilità del comando strip.
Poi in molti sorgenti ho visto "requiredbuilder" ma io sulla mia slack 13 non trovo questo comando, a che serve ?
Grazie per le eventuali risposte !
Io ti posso rispondere solo a un paio di domande.
Requiredbuilder è un tool che dobbiamo installare noi pacchettizzatori ( e che puoi trovare anche te qui http://stabellini.net/requiredbuilder.html ), che serve a calcolare le dipendenze di un pacchetto, prima di creare il package. Fa uso di ldd per calcolare le dipendenze, è molto utile anche se non è affidabile al 100%.
Strip è un comando che elimina i simboli di debug dai file binari (simboli che alla gente comune non servono), rendendoli di fatto più leggeri.
( e non CWD=${pwd}) sono due modi per dire la stessa cosa, anche se ci sono problemi di compatibilità tra le diverse tipologie di shell e tra versioni diverse di shell dello stesso tipo
così come l'altro, significano che nel caso in cui la variabile TMP non sia impostata (ad esempio come variabile d'ambiente) TMP=/tmp/tgz, altrimenti TMP=variabile_già_impostata
mentre
ok perfetto.
Uhm come mai mettere $(pwd) e non ${pwd} ?
cosa cambia ?
nella guida ho letto che () danno vita a subshell mentre {} no, è forse per questo ?
ma non sono un guru del bash scripting....aspetto risposte da persone più esperte; fermo restando che il codice scritto tra "( )" viene di certo eseguito in subshell.
$(pwd) è diverso da ${pwd}. Mentre il primo assegna alla variabile l'output di pwd ( uguale a CWD=`pwd` ), il secondo non ci mette niente.
Non ti so spiegare cosa faccia di preciso la forma tra parentensi graffe, ma ti posso dire che non la puoi usare per assegnare l'output dei comandi.
eseguirà il comando pwd e darà il risultato come valore della variabile $CWD...
mettendolo tra parentesi graffe invece non eseguirai il comando, quindi il valore della variabile sarà quello contenuto tra parentesi, nel nostro esempio:
${pwd} è uguale a $pwd, si utilizza nei casi ambigui, per esempio con $pwd$pippo cosa vogliamo intendere?
$pwd e $pippo attaccate o la variabile pwd$pippo?
e se prendiamo un risultato da shell, e tanti atri casi?
allora facciamo ${pwd}${pippo} o ${pwd$pippo}
nei casi in cui la variabile prende i valori da un comando, è utile anche usare le graffe "$pwd", in modo da comprendere gli "spazi"
conraid ha scritto:${pwd} è uguale a $pwd, si utilizza nei casi ambigui, per esempio con $pwd$pippo cosa vogliamo intendere?
$pwd e $pippo attaccate o la variabile pwd$pippo?
e se prendiamo un risultato da shell, e tanti atri casi?
allora facciamo ${pwd}${pippo} o ${pwd$pippo}
nei casi in cui la variabile prende i valori da un comando, è utile anche usare le graffe "$pwd", in modo da comprendere gli "spazi"
Esatto, ma esistono casi ambigui.
Metti che vuoi copiare il contenuto di pippo a pippo con estensione 1:
cp $pippo $pippo1 non funziona
cp $pippo ${pippo}1 funziona
Vecchia regola della Bourne Shell:
mettere _sempre_ le graffe, non si avra` _mai_ ambiguita`/problemi.