Usando "alias" nello script bash in OSX

4

Scrivo alcuni script e voglio farlo funzionare su Linux e Mac. Il problema è che "Le implementazioni di sed, readlink, zcat, ecc. Sono diverse su OS X e Linux."

Così ho provato l'approccio THIS , ma per me il comando alias non funziona come previsto. Ecco un semplice script 'a':

$cat a
alias readlink=gredlink
readlink --help

e il risultato ...

$./a
readlink: illegal option -- -
usage: readlink [-n] [file ...]

Qualcuno potrebbe spiegarmi cosa c'è sotto le tende, e c'è una soluzione?

Utilizzo di OSX Yosemite 10.10.5 È lo stesso con la bash inclusa con il sistema operativo e con "GNU bash, versione 4.3.42 (1) -release (x86_64-apple-darwin14.5.0)"

    
posta Hristo Trendafilov 26.04.2016 - 08:15
fonte

1 risposta

5

Gli alias non sono interpretati all'interno degli script di shell. Da bash(1) :

Aliases are not expanded when the shell is not interactive, unless the expand_aliases
shell option is set using shopt)

Quindi lo script chiama ancora% standardreadlink che non conosce --help .

Invece di impostare expand_aliases (che devi ricordare di fare così su ogni sistema e che può portare a effetti collaterali imprevisti in altri script) ti consiglio di usare invece le funzioni:

function my_readlink() {
    greadlink "$@"
}
my_readlink --help
    
risposta data 26.04.2016 - 08:29
fonte

Leggi altre domande sui tag