Antes de hoy, he usado el terminal hasta cierto punto para moverme dentro y fuera de los directorios y cambiar las fechas de los archivos usando el touch
comando. Me di cuenta de la extensión completa de la terminal después de instalar un script divertido en Mac y de tener chmod 755
que hacer que el archivo fuera ejecutable después.
Sin /usr/local/bin
embargo, me gustaría saber qué es. /usr/
, Supongo, es el usuario de la computadora. Sin /local/
embargo, no estoy seguro de por qué está allí. Obviamente significa la computadora local, pero dado que está en la computadora (o en un servidor), ¿sería realmente necesario? ¿No /usr/bin
estaría bien?
Y lo que es /bin
? ¿Por qué esta área se usa generalmente para instalar scripts en el terminal?
Cerrar.
Unix comenzó como un sistema operativo multiusuario, por lo que no es "el usuario", es "los usuarios ", en plural.
Antes de que AT&T Unix System V Release 4 (SVR4) saliera en 1988 con sus herramientas de administración de usuarios predeterminadas para crear directorios de inicio de usuarios
/home
, la ubicación convencional era/usr
.¹ Su$HOME
directorio podría haber estado/usr/jfw
en un cuadro de System III ./usr
también contenía, entonces como ahora,/usr/bin
,/usr/lib
, etc. La experiencia mostró que la segregación de los directorios de inicio era una buena práctica de gestión del sistema, por lo que con el/home
cambio de política en SVR4, dejó atrás todo lo que ahora consideramos como pertenecientes a/usr
./usr
todavía tenía una buena razón para conservar el nombre: lo que quedó atrás fueron los archivos que no necesitaban estar disponibles hasta que el sistema se arrancó lo suficiente como para admitir el uso interactivo normal. Es decir, lo que quedó atrás fueron las partes del sistema operativo centradas en el usuario . Esto significaba que/usr
podría estar en un volumen físico diferente, lo que era bueno en los días de las unidades de disco duro de 92 MB del tamaño de las lavadoras .Los primeros sistemas Unix tuvieron cuidado de mantener los archivos principales del sistema operativo fuera de
/usr
modo que aún pudiera arrancar en modo de usuario único² incluso si el/usr
volumen no se podía montar por alguna razón. El volumen raíz contenía herramientas suficientes para volver a poner el/usr
volumen en línea.Varias versiones de Unix ahora caso omiso de este principio constructivo de edad, ya que incluso pequeños sistemas embebidos tienen suficiente espacio tanto para los archivos de volumen de raíz tradicional y todas
/usr
en una sola volume.³ de Red Hat Enterprise Linux, Solaris y Cygwin enlace simbólico/bin
a/usr/bin
y/lib
a/usr/lib
fin de que no hay Ya no hay diferencia entre estos directorios.Si. Se refiere al hecho de que los archivos debajo
/usr/local
se supone que son particulares de ese sistema único. Los archivos que son genéricos deben vivir en otro lugar.Esto también tiene raíces en la forma en que los sistemas Unix se usaban comúnmente hace décadas cuando todo esto estaba estandarizado. Una vez más, los discos duros de la época eran voluminosos, realmente caros y se almacenaban poco para los estándares actuales. Para ahorrar dinero y espacio en los discos, un laboratorio de computación lleno de cajas de Unix a menudo compartía la mayor parte de
/usr
NFS o algún otro protocolo de red para compartir archivos, por lo que cada caja no tenía que tener su propia copia redundante. Archivos específicos de una sola la caja iría debajo/usr/local
, que sería un volumen separado de/usr
.Esta herencia histórica es la razón por la cual sigue siendo el valor predeterminado para la mayoría de los software de Unix de terceros para instalar
/usr/local
cuando se instala a mano. La mayoría de estos programas le permitirán instalar el paquete en otro lugar, pero al no elegir, obtiene el valor predeterminado seguro, que no interfiere con otras ubicaciones de instalación comunes con propósitos más específicos.Hay buenas razones para hacer que el software se instale en otro lugar. El equipo macOS de Apple hace esto cuando construyen, digamos, a
bash
partir del código fuente de GNU Bash . Se usan/
como prefijo de instalación, anulando el/usr/local
predeterminado, de modo que Bash termine en/bin
.Otro ejemplo es la forma en que los sistemas Linux más antiguos segregaron su software GUI
/usr/X11R6
, para mantenerlo separado de la línea de comandos tradicional y elcurses
software basado en. Esto se hizo simplemente anulando el/usr/local
prefijo predeterminado con/usr/X11R6
.⁵Es la abreviatura de "binario", que en este contexto significa "un archivo que no es texto sin formato". La mayoría de estos archivos son ejecutables en un cuadro de Unix, por lo que estos dos términos se han convertido en sinónimos en algunos círculos. ("Por favor, constrúyeme un binario para RHEL 7, Fred").
Los archivos de texto en una máquina Unix viven en otro lugar:
/etc
,/usr/include
,/usr/share
, etc.Érase una vez, incluso los scripts de shell, que son archivos de texto sin formato, se mantuvieron fuera de los
bin
directorios, pero esta línea también se ha desdibujado. Hoy en día, losbin
directorios suelen contener cualquier tipo de archivo ejecutable, ya sea estrictamente "binario" o no.Notas al pie y digresiones :
La naturaleza primitiva de las herramientas de administración de usuarios antes de SVR4 significaba que el
HOME=/usr/$NAME
esquema se documentaba simplemente como una convención, en lugar de que las herramientas de software lo aplicaran como predeterminado.Puede ver esto en la página 4-8 de la " Guía del administrador del sistema AT&T Unix System V versión 3.2 : aquí puede ver que AT&T recomienda el
/usr/$NAME
esquema anterior en la última versión principal de Unix antes de que saliera SVR4.Era bastante común en los sistemas Unix más antiguos que los administradores de sistemas eligieran un esquema diferente que tuviera más sentido para ellos. Ser personas, eso significaba que se inventaron muchos esquemas diferentes.
Un esquema que encontré antes se
/home/$NAME
convirtió en el estándar/u/$NAME
.Otro sistema utilicé a principios de 1990 tenía tantos usuarios que no podían caber todos los directorios de inicio en un solo volumen físico, por lo que utiliza un esquema como
/u1/$NAME
,/u2/$NAME
y así sucesivamente, por lo que recuerdo. El disco en el que terminó su directorio de inicio fue simplemente una cuestión de cuál tenía espacio en el momento en que se creó su cuenta.Puede iniciar un cuadro de macOS en modo de usuario único manteniendo presionado Cmd-Smientras se inicia. Suelta una vez que la pantalla se vuelva negra y veas aparecer un texto gris claro. Es como correr bajo la Terminal, pero ocupa toda la pantalla porque la GUI aún no ha comenzado.
Ten cuidado, estás corriendo como
root
.Escriba "salir" en el indicador de raíz de usuario único para salir del modo de usuario único y continuar arrancando en modo GUI multiusuario.
Los sistemas operativos Unixy que aún parecen mantener los archivos críticos de modo de usuario único fuera
/usr
, de hecho, pueden no hacerlo en estos días. Una vez hice que un cuadro de FreeBSD 9 no se/usr
pueda iniciar moviéndome a un volumen ZFS. Olvidé que las características de ZFS en la raíz no llegaron hasta FreeBSD 10, creando un Catch 22 : ¡el sistema operativo necesitaba archivos/usr
para poder montar/usr
!Eso fue lo suficientemente malo, pero si FreeBSD 9 aún mantuviera sus cosas de arranque de un solo usuario fuera
/usr
, podría haberlo arreglado en su lugar. Como no arrancaría ni siquiera en modo de usuario único por/usr
ser imposible de montar, claramente esa tradición se había violado de alguna manera. Tuve que arrancar desde un CD de rescate para que el sistema volviera a funcionar.Aquí también es donde obtenemos
/usr/share
: segrega los archivos que podrían compartirse incluso entre cajas Unix con diferentes tipos de procesadores. Típicamente, archivos de texto: páginas man, el diccionario, etc."X11R6" se refería a la versión del sistema X Window que sustentaba las GUI de Linux en el momento en que prevalecía esta convención. Los sistemas Linux generalmente dejaron de segregar el software GUI cuando X11R6 fue reemplazado por X.Org .
Los sistemas Unix originales mantuvieron sus scripts de shell principales
/etc
para evitar mezclarlos con los verdaderos binarios/bin
.fuente
Recomendaría consultar Wikipedia para preguntas relacionadas con la estructura en general, cubrirá los conceptos básicos.
Sin embargo, para responder su pregunta directamente:
Es por eso que tiendes a encontrar una estructura similar entre los dos; / usr / {, local /} {bin, sbin, lib}. Al ser nuevo en el shell, ese bit con los {} es una expansión del shell. Intenta ejecutar
desde su shell local para ver cómo funciona.
fuente
/usr/local/bin
muestra las raíces de UNIX-esque del último Mac OS (su BSD basado allí).Esto se ha transformado desde las primeras implementaciones de UNIX para Linux y BSD, pero la convención se ha mantenido. Ahora,
/usr/bin
sería para programas y bibliotecas "principales" o centrales, donde/usr/local/bin
sería para programas y bibliotecas complementarias y no críticas.fuente
/usr/nzwulfin
por defecto. Otro esquema común. antes de que el/home
esquema SVR4 se hiciera cargo, era/u
. Un sistema que utilicé al principio tenía tantos usuarios que necesitaban múltiples discos físicos para el almacenamiento de archivos de usuarios, por lo que tenían cosas como/u/d5/tangent
./usr/local/bin
es la ubicación predeterminada más popular para archivos ejecutables, especialmente los de código abierto.Sin embargo, podría decirse que esta es una mala elección ya que, en los sistemas Unix,
/usr
se ha estandarizado a principios de los noventa para contener una jerarquía de archivos que pertenecen al sistema operativo y, por lo tanto, pueden ser compartidos por múltiples sistemas que utilizan ese sistema operativo.Como estos archivos son estáticos, el
/usr
sistema de archivos se puede montar de solo lectura./usr/local
está derrotando este estándar, ya que es por diseño local, por lo tanto no compartido, por lo que debe ser de lectura y escritura para permitir la compilación local y no es parte del sistema operativo. Lástima que algo así/opt/local
no haya sido elegido ...fuente
Le recomiendo que utilice
/usr/local
para programas comerciales que pueda instalar, como Mathematica. Colóquelo en su propia partición cuando configure. Cuando actualice su sistema operativo, esta partición no se verá afectada y no tendrá que volver a instalar su contenido. Así que úsalo para cosas que quieras mantener entre las actualizaciones del sistema operativo.Por separado, asegúrese de dar
/home
su propia partición por este motivo también.fuente
Esta respuesta también puede ser útil.
/ usr / local
La idea original detrás
/usr/local
era tener un directorio separado ('local') '/ usr' en cada máquina además/usr
, que podría montarse solo lectura desde otro lugar. Copia la estructura de/usr
.En estos días,
/usr/local
es ampliamente considerado como un buen lugar para mantener programas autocompilados o de terceros. La/usr/local
jerarquía es para uso del administrador del sistema al instalar software localmente. Es necesario evitar que se sobrescriba cuando se actualiza el software del sistema.Se puede usar para programas y datos que se comparten entre un grupo de hosts, pero que no se encuentran en
/usr
. El software instalado localmente debe colocarse en/usr/local
lugar de a/usr
menos que se esté instalando para reemplazar o actualizar el software/usr
.fuente