A abordagem correta é manter os comandos POSIX
compatíveis (ou seja, usar awk
, não nawk
ou gawk
, grep
, não /usr/xpg4/bin/grep
), opções e sintaxe e definir seu PATH
assim:
PATH=$(getconf PATH):$PATH
ou no Solaris se estiver usando o shell Bourne legado:
PATH='getconf PATH':$PATH
e é isso, seus scripts iniciados por lá devem ser executados sem modificações. Evite usar o #!/bin/sh
shebang, que apesar da crença popular é não POSIX
compliant. Apenas não use shebang em tudo. Você pode usar command -v sh
para ver o que o POSIX
shell está disponível em sua máquina.
No entanto, parece que você deseja manter seus scripts não portáveis inalterados. Em seguida, você pode manter a abordagem sugerida anteriormente para comandos usando a sintaxe POSIX
e adicionar um front-end para os comandos não portáteis a serem manipulados em outros sistemas operacionais. Como seus scripts estão usando shells de estilo Bourne ou Csh, aliases e funções não serão portáteis, é melhor usar sua própria biblioteca de scripts de wrapper que você coloca na frente de seu PATH
. Por exemplo:
sh / ksh / bash / ...:
PATH=~/bin:'getconf PATH':$PATH
csh:
set path = ( ~/bin 'getconf PATH' $path)
-
mkdir -p ~/bin
cd ~/bin
cat > awk <<%
#!/bin/sh
PATH='getconf PATH':$PATH awk "$@"
%
ln -s awk nawk
ln -s awk gawk