Pregunta

Tengo el siguiente problema:Tengo muchos scripts de prueba que se están ejecutando actualmente usando Kit de herramientas MKS.Logramos ejecutar esos scripts usando el shell mingw (msys) pero hay otros scripts que hacen uso de algunos aliases que están integrados en MKS Toolkit y no en bash.

El problema es que nadie quiere cambiar esos scripts, ni siquiera automáticamente mediante el uso de un script.Esto significa que debo definir y usar esos alias.Intenté definir los alias en el archivo "/etc/profile" del shell msys pero sin éxito.También intenté usar shopt -s expand_aliases (en "/etc/profile") pero eso tampoco funciona.

¿Alguien podría compartir una idea sobre cómo se podría hacer esto?Tenga en cuenta que los guiones existentes tendrán que seguir siendo los mismos.

Cualquier pensamiento o idea es bienvenido.

Gracias

¿Fue útil?

Solución 2

esta respuesta me dio la solución.Implica definir la variable BASH_ENV antes de ejecutar

bash script_name.sh

BASH_ENV apuntará a un script que establece el entorno del shell.En mi caso, para exportar el aliases y también las funciones necesarias, el script se ve así:

shopt -s expand_aliases

alias my_alias="echo my_alias"

function MyFunction {
    echo "MyFunction(DUMB):" $* 
}

export -f MyFunction

Otros consejos

El /etc/profile solo se obtiene para shells de inicio de sesión.Si desea los alias en su secuencia de comandos, debe colocarlos en un archivo separado y obtenerlos en las secuencias de comandos que los necesitan.Por ejemplo:

alias.sh:

alias walrus="echo coo coo cah joo"

guión.sh:

#!/bin/bash

shopt -s expand_aliases
. aliases.sh

walrus

y luego

$ ./script.sh
coo coo cah joo

Probablemente esa sea la forma más razonable de hacerlo.Si insistes en no cambiar los guiones en absoluto, entonces es posible que puedas ejecutarlos indirectamente como:

bash --rcfile aliases.sh -i script.sh

Eso le indicará a bash que ejecute un shell interactivo (y así expandir los alias y obtener nuestro script de alias antes de ejecutar script.sh).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top