¿Podría alguien explicar cómo funciona el exitcomando en la terminal Unix?
Una búsqueda de man exit y which exitno fue útil y me encontré con el siguiente problema.
Después de instalar paquetes adicionales para Anaconda y PyCharm en mi nuevo sistema Red Hat, noté que cada vez que llamaba exitpara salir de una sesión de terminal recibía una serie de errores, y luego el terminal se cierra como se esperaba. Los errores parecen sugerir que mi llamada a exitestá activando una llamada rm ~/anaconda3/.../y está rm ~/PyCharm/....causando un error. Todos los directorios también parecen ser las ubicaciones de los paquetes que descargué para estos programas (es decir, numpy), ver más abajo.
$ exit
rm: cannot remove ‘~/anaconda3/lib/python3.5/site-packages/numpy/core’: Is a directory
...
...
Resuelto
En mi ~/.bash_logoutarchivo, había una línea
find ~ -xdev ( -name *~ -o -name .*~ -o -name core ) -exec \rm '{}' \;
Al comentar esta línea, se detuvieron los mensajes de error. Parece buscar y eliminar todos los archivos temporales. Pero también intenta encontrar directorios con la palabra "núcleo" en ellos, y eliminarlos también. Este era un preajuste en el sistema.
fuente

exitsale de esa sesión de terminal, o eso sucede cada vez que lo usaexit?exites un alias?corearchivos es porque generalmente son archivos de volcado de memoria ( volcados de núcleo ) que ocupan espacio pero rara vez son útiles a menos que esté desarrollando el software de bloqueo. En este caso, está intentando eliminar un directorio llamadocore, que falla (y lo bueno es que falla, ¡numpy.corees esencial para NumPy!).ulimit -c 0el valor predeterminado) Esefind -exec rmcomando no es algo que quisiera de todos modos, pero podría agregarlo-type f. También puede hacer que sea mucho más eficiente eliminar múltiples archivos mediante el uso en-exec rm {} +lugar de... \;, por lo que agrupa varios argumentos en unarmlínea de comando (como xargs)Respuestas:
Por lo general, solo vería la ejecución al salir de un shell si ha configurado esto manualmente. Pero tal vez uno de los paquetes que ha instalado viene con un script de shell de salida bash ...
cheque;
tal vez encuentres una llamada de guión desde allí, es extraña ...
fuente
find -xdev ....man bashTales trampas se usan a menudo para limpiar archivos tmp en la salida, consulte /programming/687014/removing-created-temp-files-in-unexpected-bash-exit
Defina una trampa de salida como esta (para una mejor prueba en un nuevo shell):
Mostrar trampa EXIT definida:
Prueba:
Tenga en cuenta que también
exitse puede "llamar" implícitamente. Entonces, en lugar deexitti, también podrías haber activado la trampakill -HUP $$.fuente
type -a exit->exit is a shell builtines cómo saber leer la página de manual de bash (o ejecutar enhelp exitlugar de man) en primer lugar.El
exitcomando es un comando incorporado especial en shells. Tiene que estar incorporado ya que necesita salir del proceso de shell.Sale del shell con el estado de salida proporcionado, si lo hay, o el del último comando.
Al salir, el shell ejecutará las
EXITtrampas si las hay. Vea la salida detrap(en shells tipo Bourne) para los actualmente configurados.Con muchas conchas, si los depósitos se invocó como un shell de entrada (algunos sistemas / usuarios configurar emuladores de terminal para iniciar un shell de entrada), sino que también ejecute el código almacenado en archivos especiales como
~/.logout,~/.zlogout,~/.bash_logouty, posiblemente, los correspondientes en/etcfunción de la concha .Puede hacer una
set -xantes de llamarexitpara tener una idea de dónde se ejecutan esos comandos.fuente
set -xset -xsalida ejecutando bash de una manera que no borre o cierre el terminal después de que salga, o tal vez al hacerloset -x,exec &> exit_log.txtluego escriba a ciegasexit.exites un comando "incorporado" de bash, por lo que no es de extrañar queman exitno ayude.Se puede obtener la documentación adecuada de las páginas del manual
man basho con el comando incorporadohelpde bash (help exit).Si realmente quiere saber cómo funciona, eche un vistazo a la fuente: http://git.savannah.gnu.org/cgit/bash.git/tree/builtins/exit.def?h=bash-4.4
fuente