Un alias, como llse define con el aliascomando.
Puedo verificar el comando con cosas como type llqué impresiones
ll is aliased to `ls -l --color=auto'
o command -v llque imprime
alias ll='ls -l --color=auto'
o alias llque también imprime
alias ll='ls -l --color=auto'
pero parece que no puedo encontrar dónde se definió el alias, es decir, un archivo como .bashrc, o quizás manualmente en el shell en ejecución. En este punto, no estoy seguro de si esto es posible.
¿Debo simplemente revisar todos los archivos cargados bashy verificar cada uno de ellos?

bash -xlRespuestas:
La definición manual será difícil de detectar (los registros del historial, tal vez) aunque le pida al shell que muestre lo que está haciendo y luego
grepdebería ayudar a encontrarlos en un archivo rc:Si el shell no captura con precisión las opciones necesarias con una de las invocaciones anteriores (que ejecutan interactivamente el comando nulo), entonces
script:Otra opción sería usar algo como
straceosysdigpara encontrar todos los archivos que toca el shell, luego ir agrepellos manualmente (útil si el shell o el programa no tiene una-xbandera); los archivos RC estándar no son suficientes para una verificación manual del nombre de archivo si algo como oh-my-zsh o configuraciones específicas del sitio extraen código de quién sabe dónde (o también puede haber variables de entorno, como señala sorontar en su respuesta) .fuente
PS4='+The ll alias is "${BASH_ALIASES["ll"]}" ' bash -ixlc :Aquí es donde me parece
grep -rlmuy útil:le dirá en qué archivo
aliasse usa la palabra .Probablemente en
~/.bashrcy sin duda en~/.bash_aliasessi existe.Sin embargo, es imposible estar absolutamente seguro de que eso cubre todas las opciones. Esos archivos también pueden llamar o cargar cualquier otro archivo. Una variable de entorno como ENV o
$BASH_ENVpuede dirigir bash para cargar algunos otros archivos.Y los alias pueden incluso definirse estableciendo una variable (énfasis mío):
fuente
grep -rl alias ~/.bash*puede coincidir falsamente con los archivos de historial, ¡pero +1 por señalar la matriz BASH_ALIASES!No conozco una forma de enumerar realmente la fuente de sus alias, pero dado que parece que está usando bash, creo que estos son los posibles archivos fuente:
Debería poder buscar entre ellos para encontrar el alias, por ejemplo
grep 'ls -l --color=auto' /etc/profile ~/.profile /etc/bash.bashrc ~/.bash_profile ~/.bashrc.fuente
bash -x, como mencionaste. Supuse que lo anterior era lo suficientemente fácil de ejecutar rápidamente y si no encuentra el alias, puede leer los pasos de ejecución.Combinando la respuesta de thrig con @ sugerencia de MarkPlotnick , se puede comprobar si
BASH_ALIASES[ll]se ajusta a reducirlo. LaBASH_SOURCEmatriz y lasLINENOvariables son particularmente útiles aquí. Desafortunadamente, la verificación de siBASH_ALIASES[ll]se establece solo tendrá éxito después de que se haya establecido el alias, por lo que la primera línea de este tipo podría estar en otro archivo por completo.Dando salida como:
Incluso puede terminar el shell utilizando esta verificación:
fuente
He tenido éxito simplemente usando
which.fuente
whichpuede manejar alias en tcsh (y tal vez csh anterior) y zsh donde está integrado, y en bash usando el perfil predeterminado en RedHat-family que tiene un kludge para ejecutar el programa GNU (externo) pero alimentarlo con datos de alias de shell, de lo contrario no . Más importante, solo dice en qué está configurado el alias, no dónde se configuró, cuál era la Q aquí.Marque ~ / .profile si no está en ~ / .bashrc
fuente
Finalmente encontré la
lldefinición de alias para nuestro servidor web (CentOS) en dos scripts de shell en/etc/profile.d/:/etc/profile.d/colorls.csh/etc/profile.d/colorls.shLo encontré por primera aprendizaje a partir de los comentarios de arriba donde estaba el perfil de todo el sistema:
/etc/profile. Ese archivo indica que los alias de todo el sistema están definidos/etc/bashrc, y en ese archivo vi que recorre varios scripts de shell/etc/profile.d/, así que utilicégrepen ese directorio y finalmente encontré las definiciones. También descubrí que hay unl.alias que enumera todos los archivos de puntos:De
colorls.sh:(Hay alias equivalentes en
colorls.csh.)fuente
Primero use los siguientes comandos
Listar todas las funciones
Listar todos los alias
Si no encuentra el alias o la función, considere un método de búsqueda más agresivo
Versión bash
Versión Zsh
Breve explicación de las opciones
fuente