Pregunta

Estoy tratando de usar alias en un shell bash no interactivo. He definido mis alias en ~ / .bashrc y he establecido la variable BASH_ENV = ~ / startUpFile . El contenido del archivo de inicio es source ~ / .bashrc .

Puedo ver que se reconocen mis alias cuando ejecuto el comando alias . Sin embargo, si intento usar un alias definido en ~ / .bashrc , Bash no puede reconocerlo. Me da el error de comando desconocido.

Con el shell TCSH es bastante fácil hacer esto porque el archivo ~ / .cshrc siempre se lee.

¿Alguna idea de cómo puedo hacer esto con un shell Bash?

¿Fue útil?

Solución

El comando shopt -s expand_aliases permitirá la expansión de alias en shells no interactivos.

Otros consejos

.bashrc solo se procesa mediante shells interactivos.

Además, los alias no se expanden cuando el shell no es interactivo, a menos que la opción de shell expand_aliases se establezca mediante shopt . A menos que, por supuesto, se invoque el modo POSIX llamando al shell con el nombre sh en lugar de bash .

Las personas que usan mucho los alias a menudo obtienen su .bashrc al final de su perfil para que los alias estén allí incluso para shells no interactivos. Puede que esta no sea la mejor manera, pero es bastante común.

Son cosas como esta las que me llevan a creer que en el siglo XXI deberíamos abandonar los scripts de shell en favor de un lenguaje completo como Python. Es mucho más predecible.

Tienes que

shopt -s expand_aliases

en el archivo señalado en su BASH_ENV

Tuve un problema similar, al final, descubrí que ~ / .bashrc era todo lo que necesitaba.

Sin embargo, en Ubuntu, tuve que comentar la línea que detiene el procesamiento de ~ / .bashrc:

If not running interactively, don't do anything
[ -z "$PS1" ] && return
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top