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?
strace
de no ejecutar un programa no dé como resultado un rastro?Respuestas:
Si piensas en cómo
strace
funciona, tiene mucho sentido que ninguno de los componentes de Bash sea rastreable.strace
solo puede rastrear ejecutables reales, mientras que los incorporados no lo son.Por ejemplo, mi
cd
comando:Truco para strace'ing cd?
Encontré esta técnica en la que puedes invocar
strace
elbash
proceso real y, al hacerlo, rastrear indirectamente decd
esa manera.Ejemplo
Lo que resulta en que yo pueda ordenar el
bash
proceso 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
strace
la cáscara haciendocd /some/dir
:fuente
$1
aquí, parabash
, esto no debería ser%
o%1
?Puedes probar lo siguiente:
Por ejemplo:
fuente