![Como faço um alias funcionar quando preciso invocar mais de um binário no mesmo comando?](https://rvso.com/image/1365809/Como%20fa%C3%A7o%20um%20alias%20funcionar%20quando%20preciso%20invocar%20mais%20de%20um%20bin%C3%A1rio%20no%20mesmo%20comando%3F.png)
Digamos que eu tenha dois arquivos binários:binário1ebinário2.
Cada um deles tem seu próprio conjunto de opções:opções1eopções2.
Os usuários precisam invocar um comando que siga esta estrutura:
binary1 options1 binary2 options2
No entanto, quero definiropções2eu mesmo e fazê-los executar o seguinte:
binary1 options1 alias
onde
alias='binary2 options2'
Existe alguma maneira de fazer isso funcionar no bash/tcsh? Estou trabalhando no SLES 11 SP2 em arquitetura de 64 bits.
Responder1
Você precisa que binário1 e opções1 sejam o que eles desejam para iniciar? Então: defina a função "alguma coisa":
something () {
options2="...." #you define them as you want, either here or from another source
binary1="$1" ; shift
"$binary1" "$@"
binary2 $options2
}
(e tenha-o definido nos arquivos de login do bash)
E faça-os executar:
something binary1 options1
Dessa forma, eles podem realmente enlouquecer com as opções1, como:
something touch file1 file2 "file3 with extra spaces" file4
Responder2
mpirun não gosta de usar um alias, como você provavelmente já percebeu. A melhor coisa é criar um wrapper em torno do seu executável. Então coloque o seguinte em um arquivo (torne-o executável):
#!/usr/intel/bin/tcsh -f
exec /full/path/to/dplace -s1 -c 0-$TOP_PROC $*
Se você nomear este arquivo como "dplace" e colocá-lo no caminho dos usuários em um diretório que é pesquisado antes do diretório onde o dplace real é encontrado, então ele executará de forma transparente o script wrapper (lembre-se de "refazer" como você estão tentando isso).
Presumo que TOP_PROC já esteja definido no ambiente.