¿Donde pongo mis scripts?

Vale, te has creado un _script_ en Unix para automatizar una tarea, pero después de programar durante horas, ahora viene lo más difícil de todo… donde lo pones?

Podrías ponerlo en la carpeta /bin… o en /usr/bin… incluso en /home/../bin. Para qué tantas carpetas de binarios?

Vamos a intentar explicar para qué sirve cada una.

Jerarquía

Los directorios en Unix siguen una jerarquía que, aunque no lo parezca, intenta tener un sentido. Los más importantes son:

  • /boot: Cosas necesarias para el arranque.
  • /lib: Librerías del sistema.
  • /etc: Configuraciones del sistema.
  • /proc: Información sobre los procesos que están ejecutándose.
  • /dev: Aquí encontramos archivos representando dispositivos conectados, como los discos duros o dispositivos usb.
  • /var: Archivos variables, como los logs.
  • /tmp: Directorio temporal. La información que hay aquí se perderá cuando reiniciemos.
  • /bin: Ejecutables indispensables que se usan antes de que se monte la carpeta /usr, o cuando se inicia en modo “_single-user_“. Aquí hay programas como _cat_ o ls.
  • /sbin: Lo mismo que antes, pero con ejecutables para administradores del sistema. Un usuario normal no tiene permisos para ejecutar estos binarios.
  • /usr: Contiene ejecutables (bin), librerías (lib) o documentación (doc).
    • /usr/bin: Lo mismo que /bin, pero para ejecutables de propósito general.
    • /usr/sbin: Igual que /usr/bin, pero para administradores del sistema.
    • /usr/local: Contiene programas que no son administrados por paquetes del sistema o el gestor de paquetes
  • /home: Todo lo relacionado con los usuarios que utilizarán el sistema
    • /home/bin: Ejecutables creados por el usuario, para tareas que no son del sistema

Cuando crees un programa propio para _parsear un csv con información, ponlo en tu /home, y cuando instales algún programa, ponlo en /usr/local/bin. Recuerda también que tanto /bin, como /usr/bin y /usr/local/bin están incluídos en el **$PATH del sistema, así que cuando quieras ejecutarlos no hace falta que pongas su ruta completa. Esto no es así para tu /home**, que deberás o bien añadirlo al $PATH_, o crear un _symlink_ de tu programa a /usr/local/bin por ejemplo.

# ln -s /home/fiunchinho/my_program /usr/local/bin/
Share Comments
comments powered by Disqus