#!/bin/sh
# Runs a command with gsed substituting for sed
set -e
mkdir -p /tmp/temp-path
ln -fs 'which gsed' /tmp/temp-path/sed
export PATH=/tmp/temp-path/:$PATH
eval "$@"
Eu gostaria de usar alias para o gsed, mas apenas enquanto um script em particular estiver sendo executado.
Eu tenho um script que chama sed. No Mac, o BSD sed não suporta os recursos necessários, mas eu não quero substituí-lo globalmente pela versão GNU.
Não consigo definir um alias no invocador, pois os aliases não são propagados e não posso defini-lo em um script de login, pois ele será aplicado globalmente. O script não pode ser editado.
Estou postando minha solução atual, usando um symlink / path hack desagradável, como resposta, mas espero que alguém encontre uma solução melhor.
Uma alternativa é instalar as versões GNU dos utilitários em um diretório específico, como /usr/local
ou /usr/local/gnu
Então, quando você quiser usar esse aplicativo específico em um script, você o indicaria explicitamente como /usr/local/gnu/bin/sed
Outra opção seria atribuir uma variável SED
enquanto é exportável.
SED='which gsed'
export SED
Em seguida, chame sed via ${SED}
Tags path shell-script