miércoles, 10 de julio de 2013

Ver el contenido de los archivos

Resto de entradas con intenciones didácticas en la etiqueta Aprendizaje.

Lo que vamos a tratar ahora son los distintos comandos de que disponemos para visualizar el contenido de un archivo.

cat (concatenate)
Sirve para listar el contenido de un archivo. Sintaxis: cat nombre_de_archivo.
  • cat > archivo.txt : crea archivo.txt con el contenido que vayamos tecleando (Enter para saltar a siguiente línea y Ctrl + d para finalizar). Recordemos que la extensión no tiene otra finalidad que aclarar que tipo de archivo es, ya que el GNU/Linux no es necesaria, como ocurre en Windows.
  • cat archivo1 > archivo2 : crea archivo2 duplicando archivo1.
  • cat archivo1 archivo2 > archivo3 : crea archivo3 con el contenido de archivo1 y archivo2.
tac
Idéntico a cat pero comenzando por el final del archivo.

more
Lista el contenido de un archivo con pausas en caso de no entrar en pantalla en su totalidad. Especialmente indicado para archivo extensos (barra espaciadora para pasar a la siguiente pantalla).

less
Muy similar a more, lista el contenido de un archivo por páginas (barra espaciadora para pasar a la siguiente página, tecla B para volver hacia atrás).

head
Para ver las primeras líneas de un archivo.
  • head -5 archivo : visualiza las 5 (o las que el usuario quiera) primeras líneas de archivo.
tail
Para ver las últimas líneas de un archivo.
  • tail -7 archivo : visualiza las 7 últimas líneas de archivo.
  • tail +15 archivo : visualiza a partir de la línea 15 de archivo hasta el final.
touch
Comando para cambiar la fecha y la hora de un archivo.
  • touch -a : cambia la fecha y hora de acceso a la fecha actual.
  • touch -d --date=CADENA : emplea CADENA en sustitución de la fecha actual.
  • touch -m : cambia la fecha y hora de modificación a la fecha actual.
  • touch -t FECHA : utiliza FECHA en lugar de la fecha actual (en formato [[SS]AA]MMDDhhmm[ss] esto es, Siglo, Año, Mes, Día, hora, minutos, segundos).
Pero touch tiene otro uso: con él podemos crear ficheros de la nada, eso sí, sin contenido alguno.
  • touch archivo : crea archivo en caso de que no exista. Podemos crear varios archivo de una sola vez (touch archivo1 archivo2 archivo3 archivo4...).
du (disk usage)
Para ver el tamaño de un directorio y su posición en el árbol de directorios.
  • du -h : visualiza el tamaño de los directorios.
  • du -h directorio : visualiza el tamaño de directorio y de sus subdirectorios si los hubiere.
  • du -ah : visualiza el tamaño del directorio actual y de sus subdirectorios si los hubiere
  • du -ah directorio : visualiza el tamaño de los archivos y los directorios contenidos en directorio.
  • du -sh : visualiza el tamaño total del directorio actual.
  • du -sh directorio : visualiza el tamaño total de directorio.
echo
Muestra una cadena de texto dada.

paco@debian:~$ echo Hola a todos
Hola a todos
paco@debian:~$
  • echo -n : muestra una cadena de texto dada sin retorno de carro.
paco@debian:~$ echo -n Hola a todos
Hola a todospaco@debian:~$
  • echo $VARIABLE : visualiza el valor de VARIABLE (acerca de las variables hemos hablado aquí).
  • echo VARIABLE : tan solo muestra el texto VARIABLE.
>
El símbolo > vacía el contenido del archivo pero sin borrarlo. Sintaxis: > archivo.

martes, 9 de julio de 2013

Listado de archivos y directorios

Resto de entradas con intenciones didácticas en la etiqueta Aprendizaje.

Esta entrada se la vamos a dedicar a un comando que nos va a permitir visualizar tanto los directorios como los archivos que contienen. Se trata del comando ls.

ls (list)
Comando para listar archivos y directorios (equivalente al dir de MS-DOS).
  • ls -a : muestra también los archivos ocultos (cuyo nombre está precedido de un punto).
  • ls -A : omite los archivos ocultos del listado.
  • ls -B : omite los archivos de backup del listado.
  • ls --color=never : omite los colores distintivos en el listado.
  • ls --color=always : recupera los colores distintivos para el listado.
  • ls --color=auto : usa los colores distintivos solo para la salida estándar (la terminal).
Los colores por defecto para distinguir tipos de archivo (recordemos que en GNU/Linux TODO es tratado como si de un archivo se tratase) están consignados en la variable LS_COLORS. Tal vez hable de ello más adelante pero de momento basta con echar un ojo a este enlace para aclarar términos.
  • ls -l : realiza el listado aportando información detallada de cada archivo y directorio.
paco@debian:~$ ls -ltotal 64
drwxr-xr-x   2  paco  paco    4096  jul    8  13:10  Descargas
-rw-r--r--    1   paco  paco    4096  jul    8  00:39  DrgNo.she
(...)
paco@debian:~$

Seguidamente, explicamos la información que proporciona cada línea:

 - d: dignifica que Descargas es un directorio.
 - rwx: los tres primeros caracteres a continuación son los permisos de usuario del directorio Descargas.
 - r-x: después van los tres caracteres que establecen los permisos de grupo.
 - r-x: y luego van los tres caracteres que definen los permisos para otros usuarios.
 - 2: el nº de enlaces.
 - paco: es el nombre del usuario propietario del directorio Descargas (en cada ordenador saldrá un propietario distinto).
 - paco: es nombre del grupo propietario del directorio Descargas (ídem).
 - 4096: es el tamaño del directorio.
 - jul    8  13:10: fecha y hora de creación o modificación del directorio Descargas.
 - Descargas: nombre del directorio, que aparece en azul por defecto.

En la segunda línea vemos que ésta comienza con un guión. Esto es porque está describiendo un archivo en lugar de un directorio, en este caso el archivo DrgNo.she. Las líneas descriptivas de directorios comienzan con una d y las de archivos con un guión. El resto de caracteres tienen el mismo significado.

  • ls -s : muestra sin detallar el tamaño en megas de los archivos listados.
  • ls -t : muestra sin detallar los archivos de más actual a más antiguo.
  • ls -r : muestra sin detallar el resultado en orden alfabético inverso.
  • ls -m : muestra los ficheros sin detallar y separados por comas.
  • ls -x : muestra los ficheros sin detallar y en columnas ordenadas.
  • ls -R : muestra el contenido de los directorios con sus subdirectorios.
Por supuesto, las opciones de este comando son intercambiables y acumulables, como con cualquier comando en GNU/Linux. Por ejemplo:
  • ls -lr : muestra el resultado detallado en orden alfabético inverso

Hay más opciones pero aquí solo hemos tratado las más destacadas. Como siempre, conviene que cada uno experimente por su cuenta, explore las posibilidades del comando y acuda a ls --help o las páginas de man para cualquier consulta.

lunes, 8 de julio de 2013

Trabajando con archivos y directorios

Resto de entradas con intenciones didácticas en la etiqueta Aprendizaje.

Hoy veremos como manejarnos con archivos y directorios dentro de nuestro terminal Linux. Algunos de los comandos que vamos a ver recordarán a más de uno los del viejo MS-DOS, cosa que supondrá una facilidad añadida para más de uno.

pwd
Este comando sirve para saber en donde estamos posicionados en cada momento. Al teclearlo y pulsar enter nos devolverá el directorio en el que estamos ubicados, por si andamos un poco perdidos.

cp (copy)
Comando para copiar archivos. Sintaxis: cp archivo1 archivo2. Si queremos copiar un archivo desde nuestro directorio /home a otro directorio cualquiera se teclean las rutas absolutas.
Ejemplo: cp /home/paco/archivo1 /etc/archivo. Así hemos copiado archivo1 de /home/paco a /etc.

mv (move)
Este comando sirve tanto para mover archivos de sitio como para cambiarles el nombre. Para moverlos usaremos la misma sintaxis que con el comando cp y para renombrar lo haremos así: mv archivo1 archivo2. De este modo archivo1 pasa a llamarse archivo2.
  • mv -i: nos preguntará antes de sobreescribir archivo (si se da el caso).

rm (remove)
Simple y llanamente, para borrar archivos. Sintaxis: rm archivo1. Y archivo1 desaparece. opciones interesantes:
  • rm -f: borra archivos descartando lo no existente sin mostrar mensaje de error (mensaje que aparecería si quisiéramos eliminar un archivo inexistente sin emplear la opción -f).
  • rm -i: para borrar archivos preguntando antes uno por uno (el clásico ¿está ud. seguro?).
  • rm -r: elimina directorios de forma recursiva (borrando subdirectorios hasta no dejar nada).
  • rm -R: ídem.

shred
Más radical aunque más seguro que rm, ya que tras emplear este podemos recuperar lo borrado mediante herramientas específicas, pero con shred se destruye la información del archivo sin posibilidad de recuperación. Actúa sobreescribiendo el archivo las veces designadas (25 por defecto) haciéndolo ilegible al machacarlo con patrones de texto aleatorios. 
  • shred -u: también elimina el archivo.
  • shred -n 'X': aumenta el número de sobreescrituras 'X' veces.
  • shred 'partición': destruye el contenido de la partición designada (aquí hablamos de como se denominan las particiones en GNU/Linux).
  • shred -f: permite ejecutar el comando sobre un archivo sin permisos de escritura, siempre que uno sea propietario del mismo (tranquilidad, ya hablaremos de los permisos y los propietarios).
  • shred -v: muestra el patrón de caraceres empleado para sobreescribir.
  • shred -z: hace una última pasada de sobreescritura, al margen de las designadas, añadiendo un último patrón de ceros.

mkdir (make directory)
Comando para la creación de directorios. Podemos crear varios a la vez. Sintaxis: mkdir dir01 dir02 dir03 dir04...
  • mkdir -p: crea un árbol de subdirectorios.

rmdir (remove directory)
Para borrar directorios.
  • rmdir -p: elimina un árbol de directorios siempre que no tengan contenido alguno.

paste
Comando que devuelve las líneas de los ficheros designados escritas secuencialmente, separadas por tabulaciones. Sintaxis: paste archivo1 archivo2.
  • paste -s: muestra el contenido de los ficheros en línea en lugar de en paralelo.
  • paste -d: utiliza el carácter / como separador.

nl (number line)
Sirve para numerar las líneas de un archivo.

cut
Permite buscar y/o seleccionar columnas o campos dentro de un archivo estructurado para mostrarlas en el terminal.
  • cut -c nº_columna archivo: muestra los caracteres que estén en la columna designada de archivo.

Por hoy lo dejamos. Les aconsejo que practiquen todos estos comandos con sus opciones, las que aquí reseño y otras que no hemos visto. Consulten la ayuda del terminal (que vimos aquí) y cuidadito con el comando shred que lo carga el diablo.

domingo, 30 de junio de 2013

Cambiar el nombre del equipo

Durante la instalación de una distribución uno de los datos que pide el sistema es el nombre del equipo. Un usuario doméstico apenas le concede importancia a este dato porque pocos son los que funcionan en red desde su casa, pero en una oficina tiene su relevancia. Por lo general se deja el nombre por defecto y se continúa con la instalación, pero más adelante se puede cambiar.

Tras mi última aventura instalando Debian 6 Squeeze así quedó mi prompt de comandos:

paco@debian:~$

En este caso, debian es el nombre de mi máquina que el instalador tenía por defecto, pero yo quiero recuperar mi antiguo paco-pc. Hay dos formas, una temporal y otra permanente. La primera es utilizar el comando hostname:

paco@debian:~$ sudo hostname paco-pc
paco@debian:~$

Parece que no ha cambiado nada, pero vamos a entrar como root con el comando su:

paco@debian:~$ su
Contraseña:

root@paco-pc:~#

Exacto, me ha cambiado el nombre del equipo en la cuenta de root, no en la de paco, que era mi intención. Si lo que queremos es cambiar el nombre del host del todo y para todo tenemos que editar con nano u otro editor que nos guste un par de archivos. El primero es el /etc/hosts:

161.0.0.3             localhost
161.0.0.3             debian.localdomain        debian

# The followwing lines are desirable for IPv6 capable hosts
::1        ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
(sigue...)

No es necesario transcribir la totalidad del contenido del archivo, ni fijarse más que en la segunda línea, que es donde figura nuestro hostname. En mi caso es debian y lo quiero sustituir por paco-pc. Es así de sencillo y así es como quedaría (cambios en negrita):

161.0.0.3             localhost
161.0.0.3             paco-pc.localdomain        paco-pc

El siguiente archivo a editar es el /etc/hostname, cuyo único contenido es el nombre de la máquina, en mi caso debian. Al editarlo con nano cambiamos debian por paco-pc y guardamos.

Finalmente asignamos nuevo nombre de host usando el comando hostname con privilegios de root:

paco@debian:~$ sudo hostname paco-pc

Ahora solo nos queda reiniciar para que el sistema asuma los cambios. Ejecutando los comandos hostname y uname -a podremos ver que se han hecho efectivos.


Host también fue el disco más polémico de los británicos Paradise Lost, allá por 1999, por su brusco giro electrónico desde posiciones metaleras. El cambio en su sonido se aprecia perfectamente en este directo de "So much is lost".


domingo, 16 de junio de 2013

Variables de entorno

Resto de entradas con intenciones didácticas en la etiqueta Aprendizaje.

Las variables de entorno son una serie de valores que determinan el comportamiento de los procesos de nuestro sistema operativo. Estos valores pueden cambiarse en algunos casos y en otros son fijos y su valor tan solo puede ser consultado pero no modificado. En GNU/Linux podemos listarlas utilizando el comando env:

paco@debian:~$ env
ORBIT_SOCKETDIR=/tmp/orbit-pacoSSH_AGENT_PID=2162
TERM=xterm
SHELL=/bin/bash
XDG_SESSION_COOKIE=9658894403e9de24aa01f7b000000007-1371379692.769482-1626187763
GTK_RC_FILES=/etc/gtk/gtkrc:/home/paco/.gtkrc-1.2-gnome2
WINDOWID=41943043
GNOME_KEYRING_CONTROL=/tmp/keyring-qZFHIX
...
(el resultado del comando es más extenso pero no veo necesario transcribirlo entero ya que solo vamos a ver unas pocas variables)
paco@debian:~

Las variables tienen un nombre y un valor. Si queremos visualizar el valor de una variable basta con ejecutar el comando echo anteponiendo el símbolo del dólar $ al nombre de la variable:

paco@debian:~$ echo $HOME
/home/paco

paco@debian:~$

Esto significa que la variable HOME tiene el valor /home/paco, esto es, que almacena como valor nuestro directorio home, que en mi caso se llama paco.

Estas son las variables más relevantes y su valor:

  • CDPATH: nombre de alias de directorios a los que se accede mediante el comando cd.
paco@debian:~$ echo $CDPATH
paco@debian:~$

En este caso no nos devuelve valor alguno porque este no ha sido establecido.

  • EDITOR: editor de texto predeterminado que utilizan los diferentes programas.
paco@debian:~$ echo $EDITOR
paco@debian:~$

Tampoco nos devuelve valor alguno porque no ha sido establecido. Le podemos estipular un valor de una manera simple:

paco@debian:~$ EDITOR=nano
paco@debian:~$

De esta forma hemos establecido el editor de textos nano como valor para la variable EDITOR. Al ser nano un comando, si tecleamos $EDITOR directamente interpretará dicho comando como valor de la variable EDITOR y automáticamente abrirá nano. Este cambio solo es válido mientras dure la sesión actual.

  • ENV: ruta donde se buscan los archivos de configuración. Tampoco la tengo establecida.
  • HOME: directorio personal de cada usuario).
paco@debian:~$ echo $HOME
paco@debian:~$ /home/paco

  • HOSTNAME: nombre de la máquina (en mi caso es debian, tal y como figura el el prompt de comandos).
paco@debian:~$ echo $HOSTNAME
paco@debian:~$ debian
  • MAIL: nombre del archivo que contiene el buzón de correo del sistema.
  • PATH:  directorios en los que la shell busca programas o comandos. Estos directorios aparecen separados por el carácter dos puntos (ver aquí un ejemplo de gestión de esta variable):
paco@debian:~$ echo $PATH
paco@debian:~$ /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
  • PWD: contiene la dirección del directorio de trabajo actual.
paco@debian:~$ echo $PWD
paco@debian:~$ /home/paco
paco@debian:~$ cd ..
paco@debian:/home$ echo $PWD
/home

paco@debian:/home$

La variable PWD establece el directorio actual, sea el que sea. Estábamos en /home/paco y ese era el valor de PWD hasta que subimos un nivel en el árbol de directorios con cd .. y nos posicionamos en /home. A partir de ahí el valor de PWD pasó a ser /home.
  • SHELL: nombre de la shell actual del sistema, que en mi caso es Bash (la cual se muestra con su ruta completa).
paco@debian:~$ echo $SHELL
paco@debian:~$ /bin/bash
  • TERM: tipo de terminal de consola que utiliza el usuario. En el caso de Debian es xterm.
paco@debian:~$ echo $TERM
paco@debian:~$ xterm
  • USER: nombre del usuario actual.
paco@debian:~$ echo $USER
paco@debian:~$ paco

Hemos visto al principio el comando env para visualizar las variables de entorno, pero no es el único. también podemos utilizar los comandos export, set y printenv. Si el resultado es demasiado largo podemos paginarlo de la siguiente forma:

paco@debian:~$ set | more

De esta forma, el larguísimo resultado del comando set aparece por páginas, pulsando la barra espaciadora para pasar a la siguiente.

Si lo que nos interesa es crear variables de entorno nuevas, entonces export es nuestro comando:

paco@debian:~$ export FRUTAS=platanos
paco@debian:~$ echo $FRUTAS
platanos

paco@debian:~$

Como ven, hemos creado la variable FRUTAS y le hemos dado el valor plátanos (un ejemplo tonto como otro cualquiera). No obstante, esta variable recién creada solo sirve para la sesión actual. Si queremos ver como convertir los cambios en permanentes, así como otras utilidades del comando export, por favor, visiten esta entrada.

Hay más cosas que contar sobre las variables, pero como estamos en un estadio muy primario de aprendizaje más vale que lo dejemos por hoy. Y como hemos hablado de la variable EDITOR aquí les dejo con un tema del segundo álbum de los británicos Editors llamado "The Racing rats".

martes, 11 de junio de 2013

Ejemplo de uso de alias para simplificar comandos

Lamento tener algo abandonado el blog pero últimamente tengo poco tiempo libre. Hoy vamos con una entrada breve y sencilla para fabricar un comando con el que cerrar la sesión y apagar el ordenador de una sola vez. En esta entrada hablamos de los comandos existentes para realizar esta operación y algunas de sus opciones. La secuencia para cerrar el sistema y dejarlo todo apagado sin sobresaltos sería esta:

sudo shutdown -h 0

        o bien

sudo shutdown -h now

A continuación habría que teclear la contraseña. Bien, un día tras otro esto acaba siendo un trámite un tanto cargante así que vamos a aligerarlo. Vamos a editar el archivo oculto .bashrc ubicado en nuestro home con el editor de textos nano. Si no están logados como root antepongan sudo o no podrán guardar los cambios:

sudo nano .bashrc

Perfecto. Una vez abierto busquemos la siguiente línea.

# some more aliases

Esto último no por nada especial, es simplemente que vamos a usar el comando alias y por una cuestión de orden vamos a procurar que todas las líneas en que lo utilicemos estén cerca unas de otras. En fin, procurando no interrumpir ningún bloque de código escribimos lo siguiente:

# alias para shutdown
alias fuera='sudo shutdown -h 0'

La primera línea, al estar antecedida por el carácter almohadilla, es descriptiva y no tiene funcionalidad, es solo un comentario acerca de lo que viene a continuación. La segunda línea ya sí es es operativa e implica el establecimiento de un atajo para shutdown -h 0 a través del comando alias, atajo al que vamos a llamar fuera (aunque podría ser fin o adios). Esto es, cuando acabemos solo hará falta teclear fuera, y a continuación la clave de usuario que corresponda si procede, para cerrar nuestro PC. Con el comando source recargamos el archivo .bashrc (o reiniciamos, lo que prefieran):

source ~/.bashrc

Y asunto concluido. Este es un ejemplo simple pero pueden crearse el alias de cualquier secuencia de comandos y así ahorrar tiempo y desgaste de huellas dactilares.

martes, 4 de junio de 2013

Aplicaciones que se van al segundo monitor sin avisar

Este problema que les voy a contar puede que no le pase a muchos linuxeros, pero a mi me ha ocurrido y tampoco es descartable que otros usuarios puedan padecer lo mismo. Es una chorrada como un piano pero me ha tenido varios días en vilo hasta que he dado con la solución, así que quiero dejar constancia por si alguien considera que esta entrada le pueda ayudar.

Mi problema era el siguiente: ya fuera con el navegador Chromium o con el Chrome, al abrirlo se inicializaba pero nunca lo veía ocupar la pantalla. En la barra de estado superior de Debian Wheezy veía el logo de Chrome pero el navegador no aparecía por ninguna parte. La lógica deducción es que se colgaba a mitad de arranque, quedándose algo así como en stand by sin posibilidad de funcionar con él. Desde el terminal de comandos, el comando top certificaba que el proceso Chrome (o Chromium) estaba activo, y la única forma de cerrarlo era con el comando kill. El mosqueo ya comenzó a superar expectativas cuando me empezó a ocurrir con otras aplicaciones como Blender y alguna que me bajé para mi blog paralelo como BricsCAD.

La solución llegó, como tantas veces ocurre, sin buscarla. A través del entorno gráfico del software de la tarjeta gráfica Nvidia tengo configurado un segundo monitor, que no es otro que mi aparato de TV, el cual está conectado a la CPU a través de un cable HDMI. Estaba probando que tal se veían los vídeos de Youtube en mi tele siendo ejecutados desde el PC, y en una pausa intenté abrir Blender de nuevo. Al instante apareció, ¡no en el monitor del ordenador, sino en mi tele! Por motivos que ignoro, Blender, BricsCAD, como inmediatamente constaté, y no se también si Chrome, porque con este no me ha vuelto a suceder, se abrían en la pantalla configurada como segundo monitor en las opciones de configuración de Nvidia. El porqué estas aplicaciones prefieren correr en mi televisor es para mí un misterio, no recuerdo haber hecho nada para que con estas ocurra y con otras no.


En la pantalla de la aplicación de Nvidia (véase imagen) mi televisor figura como TwinView (vista gemela o pantalla gemela), y Debian la detecta en cuanto la enciendo, pudiendo mover ventanas de monitor a monitor a mi conveniencia. Si quiero eliminar el efecto colateral que motiva ente post solo tengo que dejar en Disabled la opción Configuration. Y volver a activarla cuando tenga necesidad de un segundo monitor.

El caso es que lo que pasaba era esta tontería, pero por muy tonto que parezca le puede llegar a hacer perder a uno muchas horas. Así que avisados quedan si tienen configurados dos monitores y empiezan a ver como sus aplicaciones desaparecen nada más arrancarlas.

Y ya que hablamos de televisión, qué mejor que dejarles con el grupo de los 70 Television y uno de sus más afamados temas, "Marquee moon".


lunes, 3 de junio de 2013

Reiniciar el PC cuando Linux se cuelga

Sí, admitámoslo: GNU/Linux también se cuelga, y a veces tan sólidamente que la tentación de aplicar el "dedazo" al botón de apagado es irrefrenable. Lo que aquí les ofrezco una alternativa menos traumática y dañina y que he comprobado eficaz.

La mecánica es la siguiente: pulsen la tecla Alt al mismo tiempo que la Impr Pant/PetSis (la de capturar pantalla) y, sin dejar de pulsarlas, tecleen R E I S U B. Sí, les aseguro que no hace falta ser contorsionista, solo les recomiendo que las dos primeras teclas las mantengan pulsadas con sus meñiques.

Es interesante conocer qué hace cada tecla de REISUB:

R (Raw) : pone el teclado en modo "directo".
E (tErm) : termina todos los procesos.
I (kIll) : mata todos los procesos.
S (Sync) : sincroniza todos los discos para evitar pérdida de datos.
U (Umount) : desmonta todos los sistemas de archivos.
B (ReBoot) : reinicia el sistema.

Visto en ubuntu-es.org y más desarrollado en kioskea.net.

sábado, 1 de junio de 2013

Añadir un directorio a la variable PATH

Las variables son un importante aspecto dentro de los sistemas GNU/Linux que aún no he abordado, pero que tengo pendiente hacer pronto. Resumiendo mucho diré que son un conjunto de datos concretos que condicionan nuestro trabajo en la terminal y que podemos almacenar y modificar. Por si prefieren la definición de Wikipedia aquí la tienen.

Una de las variables más importantes de Linux es PATH, la cual determina los directorios donde la shell busca los ficheros binarios (los ejecutables en terminología Windows) de los comandos para no tener que teclearlos con su ruta completa. Al hilo del anterior post, resulta que en Debian Wheezy no figura el directorio /sbin en la variable PATH, por lo que todos los comandos contenidos ahí, entre los que están los relativos a los módulos del kernel como modinfo, modprobe o rmmod, no se ejecutan automáticamente cuando los tecleamos en la terminal y pulsamos enter. Para que esto sea así tenemos que añadir el susodicho directorio /sbin a la variable PATH. Procedamos.

Primero veamos los directorios que ya están incluidos en la variable PATH. Lo hacemos anteponiendo el símbolo del dólar ( $ ) a PATH:

paco@paco-pc:~$PATH
bash: /usr/local/bin:usr/bin:/bin:/usr/local/games:usr/games: No existe el fichero o el directorio
paco@paco-pc:~$

También podemos verlo usando el comando echo:

paco@paco-pc:~$ echo $PATH
bash: /usr/local/bin:usr/bin:/bin:/usr/local/games:usr/games
paco@paco-pc:~$

Bien, estos son los directorios que la variable PATH trae por defecto, separados por dos puntos:

/usr/local/bin
/usr/bin
/bin
/usr/local/games
/usr/games

Ahora añadiremos el directorio /sbin a la variable PATH usando el comando export:

paco@paco-pc:~sudo export PATH=$PATH:/sbin
paco@paco-pc:~$

Ya está añadido. Lo podemos ver si volvemos a listar la variable PATH:

paco@paco-pc:~$ echo $PATH
bash: /usr/local/bin:usr/bin:/bin:/usr/local/games:usr/games:/sbin
paco@paco-pc:~$

Ocurre que este cambio es temporal y dejará de tener efecto en cuanto cerremos la sesión. Si queremos que el cambio sea permanente tenemos varias opciones. Podemos editar el archivo ~/.bashrc (recordemos que el carácter ~ equivale a /home/usuario, que el punto en primer lugar significa archivo oculto y que estamos hablando de la shell bash), el archivo ~/bash_profile, o el ~.profile en caso de que el anterior no exista y añadirle la siguiente línea:

PATH="$PATH:/sbin"

Si lo queremos hacer directamente desde el terminal sin abrir ningún editor de textos, usaremos el comando echo para definir la línea que queremos trasladar al archivo ~/.bashrc:

paco@paco-pc:~$ echo "export PATH=$PATH:/sbin" >> ~/.bashrc
paco@paco-pc:~$

Empleando los caracteres redireccionadores >> hemos añadido la línea entrecomillada al final del archivo ~/.bashrc (mucho ojito, que si solo ponemos un redireccionador sobreescribiremos el archivo). Terminamos aplicando el comando source para recargar el archivo ~/.bashrc:

paco@paco-pc:~$ source ~/.bashrc
paco@paco-pc:~$

Otra manera de hacerlo es estableciendo la variable y luego incorporándola con el comando export, todo en la misma línea:

paco@paco-pc:~$ PATH=/sbin:$PATH ; export PATH
paco@paco-pc:~$

Y aquí se acabó lo que se daba.

Y para "Path" el tema del mismo nombre que interpretan en directos los finlandeses Apocalyptica.