2011-11-24 22 views
5

He estado editando archivos .bashrc y otros archivos init, y parece que he dejado algunos fragmentos de código o dos que están causando algunos errores en el mensaje (por ejemplo, falta el archivo), pero no puedo encontrar ellos.¿Cómo puedo depurar el prompt Bash?

¿Cómo depuro el aviso para descubrir qué scripts de inicio he pirateado sin cuidado?

+0

En un nivel pragmático, una cosa que podría hacer sería rápidamente para añadir un usuario ficticio para su máquina , y luego difunde los archivos creados en esa cuenta contra los tuyos.Un plan más sofisticado sería averiguar de dónde provienen los valores predeterminados y diferenciarlos. Por supuesto, si modificó los archivos de todo el sistema, necesitaría encontrar una forma de sacar los archivos del paquete de instalación. –

Respuesta

9

La mayoría de las shells tienen indicadores de depuración que muestran los comandos que se están ejecutando. Bash puede incluso tener uno que muestre un comando antes de la expansión de las variables y después. ¿Ha intentado marcar (creo) -c -x o -X para ver si muestran la información que está buscando?

Puede establecerlos como lo primero en los archivos rc (más globales) o simplemente pasarlos al comando bash invocando desde otro shell.

De hecho, si se invoca fiesta de otra línea de comandos, también puede utilizar la escritura comando para grabar todo lo que ves y haces en el archivo, lo que hace que el análisis post-mortem de manera mucho más fácil.

+0

Después de tirar las cosas en un archivo, algunas grep simples sacaron todo lo que necesitaba. – fny

0

tratar de ver pronta donde se ha definido - probablemente en algún archivo de puntos en su directorio personal:

grep PS1 ~/.* 

Se puede ver el valor actual de la intervención con el pie acaba de imprimirla:

echo $PS1 

HTH

0

Consulte el archivo .bash_history en su directorio personal para averiguar qué comandos ha estado ejecutando. Si usó comandos como vi filename para abrir los scripts de inicio, los encontrará en el historial de comandos.

8

Intenta invocar bash con el distintivo -x, y luego obtener tu .bashrc o .bash_profile o lo que sea que estés usando. Que deben ser prolijas suficiente para encontrar su problema

es decir:

bash -x 
source .bashrc 
3

La forma más fácil de conseguir un estado inicial limpio es a SSH en su máquina actual, pero en lugar de dejar SSH lanzar su concha con defecto configuración, proporciona un comando explícito que impide que se lea .bashrc.

ssh -tt localhost /bin/bash --norc 

El -tt fuerzas SSH para asignar un TTY, que es lo que normalmente ocurre cuando se abre una conexión de shell, pero es no por defecto cuando se ejecuta un comando explícito.

El --norc impide que bash lea su archivo de configuración (ya que queremos hacerlo nosotros mismos).

Ahora debería estar en un indicador bash, en un entorno clean. Esto es útil para examinar qué variables se establecen a .bashrc antes de que sus carreras, etc. habilitar el seguimiento y la fuente de su .bashrc:

set -x # Enable tracing 
source .bashrc