menu
- Inicio
-
Debian ▼
- /etc/network/interfaces eth0
- cambiar la mac de cualquier interfaz de red
- configuración del correo del sistema
- desactivar ipv6
- detectar el cable de red automaticamente
- fstab y nuevas particiones de disco
- gestion del standby del monitor
- plugins de iceweasel, epiphany, firefox
- Sin sonido recien instalado. Placa M2M-E SLI
- TOR Y POLIPO
- LPI ▼
- Programacion en C ▼
- SQL Oracle ▼
- Windows XP ▼
miércoles, diciembre 28, 2016
Comandos internos y externos
Hay una serie de comandos que la propia shell ejecuta sin ninguna ayuda, a esos comandos les llamaremos comandos internos. Segun consola tiene asi los comandos internos, pero se asemejan bastante no suele variar mucho. Cualquier otro comando que no sea interno, bash no sabe ejecutarlo, y entenderá que es un programa externo, así que lo buscará en una serie de directorios que se la han configurado. Por ejemplo si tecleamos:
$ ls
El bash ejecutará un programa que está en el directorio /bin/ y se lama ls. Hay que decir también que existen ciertas redundancias, bash maneja internamente ciertos comandos que también son ejecutables externos, otras shells quizá no los manejen internamente, por eso son necesarios como ejecutables externos.
Por ejemplo el comando 'pwd' nos informa de en que directorio nos encontramos, y es un comando interno de bash, pero también es un programa externo que está en /bin/. En casos así siempre se ejecuta primero el interno.
$ pwd
/home/redy
Si existe esta coincidencia, pero por la razón que sea necesitamos ejecutar el comando externo y no el interno debemos hacerlo indicando su path completo:
$ /bin/pwd
Aparentemente el resultado es el mismo, pero se ejecutó un programa externo en vez del comando interno. Prueba
$ /bin/pwd --help
Modo de empleo: /bin/pwd [OPCIÓN]
Otra forma de evitar los comandos internos es usando el comando enable que permite activar o desactivar el manejo interno del comando que queramos. Si tecleamos por ejemplo
$ enable -n pwd
A partir de ese momento y hasta que salgamos de la shell o lo volvamos a activar pwd nunca será tratado como comando interno, se ejecutará en su lugar el programa externo. Para volver a activarlo como comando interno deberás ejecutar
$ enable pwd
Para ver todos los comandos que se manejan internamente, puedes usar 'enable' sin parámetros o 'enable -p'. Y para ver los que están desactivados puedes usar 'enable -n'. Por último 'enable -a' te los muestra todos mezclados.
$ enable
$ enable -p
$ enable -n
$ enable -a
Una orden muy útil para ver como tratará bash un comando es 'type'. Type nos informa de si un comando es manejado internamente o externamente.
$ type man
man is /usr/bin/man
$ type -t man
file
$ type pwd
pwd is a shell builtin
$ type -t pwd
builtin
$ enable -n pwd
$ type pwd
pwd is /bin/pwd
$ type -t pwd
file
Todo comando que el bash no sepa manejar internamente, lo busca en los directorios dónde residen los programas. Busca un programa con el mismo nombre que el comando que tecleamos, puede ser una utilidad del sistema operativo, o un programa de usuario, no hay diferencia, si lo encuentra lo ejecuta, y si no nos avisa del error diciendo 'command not found.'.
Existe una variable que tiene un significado especial, su nombre es PATH, y contiene la lista de directorios separados por ':' en los que la shell busca los programas.
Cuando hablamos de 'comando' sin más, sin definir si es externo o interno, nos referimos tanto a los comandos que el propio bash interpreta, como a los programas que tenemos instalados en nuestro sistema operativo.
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario