PDA

View Full Version : Mac e Bashscripting


Raghnar-The coWolf-
29-05-2016, 18:07
Carissimi,
sto nuovamente valutando l'acquisto di un Mac, nella speranza che al WWDC presentino i nuovi MBP.

Cio' che mi ha sempre frenato e' che il terminale Mac e' in tutto e per tutto equivalente a Linux, ma non tutto funziona esattamente uguale, il che si traduce nell'equivalente informatico di passare dalla guida a sx a quella a dx. E' "quasi tutto" uguale e questo paradossalmente disorienta ancor di piu'.

Soprattutto, a causa di questo non riesco a riutilizzare i miei vecchi bashscript che devono funzionare alla perfezione, altrimenti se quando li passo su cluster non funzionano o viceversa e' l'incidente.

Oggi sto facendo un po' di prove con un terminale prestato e non c'e' niente da fare.
Ad esempio di oggi:
NMAX=$(echo $TMP |grep -o '[0-9]*') in linux estrae tranquillamente i numeri da una stringa in variabile $TMP. In Mac restituisce un carattere nullo, ed e' necessario passare a $(echo $TMP |grep -o '[0-9]') che pero' restituisce un carattere per volta determinando che anziche' "433" NMAX diventa "4 3 3". Insomma atroce (si' potrei fixarlo, forse, con sed facendolo piu' failproof ma non e' questo il punto).

qualcuno di voi ha mai avuto problemi di portabilita' di script o altre features del terminale? Come avete risolto?

ceschi
30-05-2016, 09:05
Secondo me per avere perfetta compatibilità ti conviene una macchina virtuale con linux :D

Raghnar-The coWolf-
30-05-2016, 11:08
Secondo me per avere perfetta compatibilità ti conviene una macchina virtuale con linux :D

E' come ho risolto fin'ora, comprando PC o in dual boot o con Windows che in virtualizzazione va il doppio e ha VMWare Player gratuito.

Juno
30-05-2016, 11:15
Scusa, ma per quell'uso specifico che immagino non richieda grosse risorse hardware (poi se dico una belinata mi corrigerai..:))...non fai prima a piazzare una macchina Linux?

Raghnar-The coWolf-
30-05-2016, 11:37
Scusa, ma per quell'uso specifico che immagino non richieda grosse risorse hardware (poi se dico una belinata mi corrigerai..:))...non fai prima a piazzare una macchina Linux?

1- in realta' occupa le maggiori risorse hardware, dato che lo script e' solo il frontend del lancio di programmi di calcolo che piu' veloci sono/piu' memoria hanno, meglio e'. Il run vero lo faccio su cluster con molti nodi, ma se posso testare qualcosa in locale tanto meglio.
2- ribadisco che l'unico motivo per cui comprerei Apple e' proprio per avere sia il terminale che powerpoint, senza virtualizzare o dualboottare. Se "faccio prima a virtualizzare", faccio ancor prima a comprarmi un PC e posso avere Skylake senza aspettare fine giugno...

VICIUS
31-05-2016, 07:42
qualcuno di voi ha mai avuto problemi di portabilita' di script o altre features del terminale? Come avete risolto?

Su mac c'è una versione vecchissima di bash di quando ancora non erano passati a gpl3 come licenza. Per il resto dei programmi hanno preferito usare le versioni provenienti da bsd (sempre per problemi di licenza), quindi si comportano in maniera leggermente diversa. L'ideale sarebbe avere una vm con un sistema identico a quello su cui andrai a fare girare gli script. Per fare un po' di sviluppo locale basta installare le versioni gnu in /usr/local ed aggiornare PATH per fargli prendere quei binari. Puoi farlo a mano oppure usare homebrew http://brew.sh.

Raghnar-The coWolf-
31-05-2016, 10:59
Su mac c'è una versione vecchissima di bash di quando ancora non erano passati a gpl3 come licenza. Per il resto dei programmi hanno preferito usare le versioni provenienti da bsd (sempre per problemi di licenza), quindi si comportano in maniera leggermente diversa. L'ideale sarebbe avere una vm con un sistema identico a quello su cui andrai a fare girare gli script. Per fare un po' di sviluppo locale basta installare le versioni gnu in /usr/local ed aggiornare PATH per fargli prendere quei binari. Puoi farlo a mano oppure usare homebrew http://brew.sh.

Grazie mille, googlando avevo notato gli homebrew.
Il mio piano era installarli appunto aggiornare i path facendo degli alias sulle shell in .bash-profile cosicche' possa caricare la shell col profilo personalizzato in gnu.

PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
MANPATH="/usr/local/opt/coreutils/libexec/gnuman:$MANPATH"

http://apple.stackexchange.com/questions/69223/how-to-replace-mac-os-x-utilities-with-gnu-core-utilities

Mi chiedevo se qualcuno avesse provato e mi garantisse che funzioni senza problemi anche con le piu' recenti versioni. Per me e' un dealbreaker, solo che il PC che sto usando ha Snow Leopard e oltretutto non ho admin privs. Tu hai provato?

VICIUS
31-05-2016, 11:14
Uso homebrew quasi tutti i giorni sul portatile di lavoro e funziona senza problemi anche su 10.11. Per quanto riguarda i pacchetti gnu non ti so dire se funzionino bene o meno. Io lo uso pie che altro per installare server vari.

Agat
08-06-2016, 07:20
grep varia da un *nix all'altro, oltre a creare un altro processo ed subshell nella command substitution, per cui per estrarre i numeri da TMP:

NMAX=${TMP//[[:alpha:]]/}

Non ho modo di provarlo in mac, ma magari va :fagiano: