Inspirado por esta pregunta, titulada: ¿ Cuándo se cargan los comandos integrados en la memoria? Al intentar responder esto, probé el siguiente comando y me sorprendió un poco que no pudiera ejecutarlo:
$ strace cd $HOME
¿Hay algún método que pueda usar para ejecutar strace para los comandos incorporados a Bash?

stracede no ejecutar un programa no dé como resultado un rastro?Respuestas:
Si piensas en cómo
stracefunciona, tiene mucho sentido que ninguno de los componentes de Bash sea rastreable.stracesolo puede rastrear ejecutables reales, mientras que los incorporados no lo son.Por ejemplo, mi
cdcomando:Truco para strace'ing cd?
Encontré esta técnica en la que puedes invocar
straceelbashproceso real y, al hacerlo, rastrear indirectamente decdesa manera.Ejemplo
Lo que resulta en que yo pueda ordenar el
bashproceso de la siguiente manera:Este es el indicador de Bash, donde está sentado allí, esperando alguna entrada. Entonces, demos el comando
cd ..:En el resultado anterior, puede ver dónde escribí el comando
cd ..y presione enter, (\n). Desde allí, puede ver questat()se llamó a la función y que luego Bash está sentado en otroread(0..indicador, esperando otro comando.fuente
A
stracela cáscara haciendocd /some/dir:fuente
$1aquí, parabash, esto no debería ser%o%1?Puedes probar lo siguiente:
Por ejemplo:
fuente