Pregunta:
Tengo un archivo ejecutable mpiexec
, cuya ruta completa es ~/petsc-3.2-p6/petsc-arch/bin/mpiexec
. Como quiero ejecutar este comando en diferentes directorios (sin tener que volver a escribir la ruta completa), configuro un alias en mi archivo .bashrc
inicio:
alias petsc="~/petsc-3.2-p6/petsc-arch/bin/mpiexec"
lo que me permite ejecutar este archivo mpiexec
en el símbolo del sistema fácilmente escribiendo:
petsc myexecutable
Intenté escribir un archivo de script de shell, llamado script
, usando mi nuevo alias petsc
como comando. Después de darle a mi script de shell los permisos apropiados (usando chmod
), intenté ejecutar el script. Sin embargo, me dio el siguiente error:
./script: line 1: petsc: command not found
Sé que podría escribir la ruta completa al archivo mpiexec
, pero es engorroso escribir la ruta completa cada vez que quiero escribir un nuevo script. ¿Hay alguna forma de que pueda usar mi alias petsc
dentro del archivo de secuencia de comandos? ¿Hay alguna manera de que pueda editar mi .bashrc
o .bash_profile
para que esto suceda?
Respuesta:
Algunas opciones:
-
En su script de shell, use la ruta completa en lugar de un alias.
-
En su script de shell, establezca una variable, sintaxis diferente
petsc='/home/your_user/petsc-3.2-p6/petsc-arch/bin/mpiexec' $petsc myexecutable
-
Utilice una función en su secuencia de comandos. Probablemente mejor si las
petsc
son complejasfunction petsc () { command 1 command 2 } petsc myexecutable
-
Obtenga sus alias
shopt -s expand_aliases source /home/your_user/.bashrc
Probablemente no desee obtener su .bashrc
, por lo que, en mi opinión, uno de los primeros 3 sería mejor.