El intérprete de comandos /bin/bash (al que nos referiremos como “el intérprete”) utiliza una colección de ficheros de inicio para ayudar a crear un entorno de trabajo. Cada fichero tiene un uso específico y pueden generar diferentes entornos de ingreso o interactivos. Los ficheros del directorio /etc proporcionan ajustes globales. Si existe un fichero diferente en el directorio personal, este puede sobreescribir los ajustes globales.
Un intérprete de ingreso interactivo se inicia tras ingresar en el sistema, usando /bin/login, mediante la lectura del fichero /etc/passwd. Un intérprete interactivo de no ingreso se inicia en la línea de comandos (es decir, [prompt]$/bin/bash). Un intérprete no interactivo está presente usualmente cuando se ejecuta un guión del intérprete de comandos. Es no interactivo porque está procesando un guión y no esperando indicaciones del usuario entre comandos.
Para más información, consulta en info bash la sección Bash Startup Files and Interactive Shells (Ficheros de inicio de Bash e intérpretes interactivos).
Los ficheros /etc/profile y ~/.bash_profile son leidos cuando el intérprete se invoca como un intérprete interactivo de ingreso.
El siguiente fichero /etc/profile básico establece algunas variables de entorno necesarias para el soporte de idioma nativo. Al establecerlas correctamente se obtiene:
La salida de los programas traducida al idioma nativo.
Correcta clasificación de los caracteres en letras, dígitos y otros tipos. Esto es necesario para que bash acepte correctamente los caracteres no ASCII en la línea de comandos en idiomas diferentes al inglés.
La correcta ordenación alfabética propia del país.
Un apropiado tamaño de papel por defecto.
Un formato correcto para los valores monetarios, horarios y fechas.
Este guión establece también la variable de entoro INPUTRC que hace que Bash y Readline utilicen el fichero /etc/inputrc creado anteriormente.
Sustituye a continuación [ll] con el código de dos letras del idioma deseado (por ejemplo, “es”) y [CC] con el código de dos letras de tu país (por ejemplo, “ES”). [charmap] debe reemplazarse por el nombre canónico del mapa de caracteres para tu locale elegida.
Puedes obtener la lista de todas las locales soportadas por Glibc ejecutando el siguiente comando:
locale -a
Las locales pueden tener una serie de sinónimos, por ejemplo “ISO-8859-15” se referencia también como “iso8859-15” y “iso885915”. Algunas aplicaciones no pueden manejar correctamente los diversos sinónimos, por lo que es más seguro elegir el nombre canónico de la locale. Para determinar el nombre canónico, en el que [nombre de la locale] es la salida mostrada por locale -a para tu locale preferida (“es_ES.iso885915” en nuestro ejemplo).
LC_ALL=[nombre de la locale] locale charmap
Para la locale “es_ES.iso885915”, el anterior comando mostrará:
ISO-8859-15
Esto resulta en un ajuste final para la locale de “es_ES.ISO-8859-15”. El importante que la locale encontrada usando el método anterior sea comprobada antes de añadirla a los ficheros de inicio de Bash:
LC_ALL=[locale name] locale country LC_ALL=[locale name] locale language LC_ALL=[locale name] locale charmap LC_ALL=[locale name] locale int_curr_symbol LC_ALL=[locale name] locale int_prefix
Dichos comandos deberán mostrar los nombres del país y el idioma, la codificación de caracteres usada por la locale, el símbolo de la moneda local y el prefijo a marcar antes del número de teléfono para acceder al país. Si cualquiera de los comandos anteriones fallase con un mensaje similar al mostrado a continuación, esto significa que o tu locale no se instaló en el Capítulo 6, o que no está soportada por la instalación por defecto de Glibc.
locale: Cannot set LC_* to default locale: No such file or directory
Si esto sucede, deberías o bien instalar la locale deseada usando el comando localedef, o considerar la elección de una locale diferente. El resto de instrucciones asumen que no hay mensajes de error procedentes de Glibc.
Algunos paquetes más allá del LFS puede que no tengas soporte para tu locale elegida. Un ejemplo es la librería X (que es parte del sistem X Window), que mostrará el siguiente mensaje de error::
Warning: locale not supported by Xlib, locale set to C
En ocasiones es posible corregir esto eliminando la parte del mapa de caracteres de la especificación de la locale, miestras que esto no cambie el mapa de caracteres que Glbc asocia con la locale (esto puede comprobarse ejecutando el comando locale charmap en ambas locales). Por ejemplo, es posible que tuvieses que cambiar quot;es_ES.ISO-8859-15@euro" por "es_ES@euro" para conseguir que la locale sea reconocida por Xlib.
Otros paquetes también pueden funcionar incorrectamente (pero no necesariamente mostrar un mensaje de error) si el nombre de la locale no cumple sus especificaciones. En estos casos, investigar cómo otras distribuciones Linux soportan tu locale podría proporcionar información útil.
Una vez hayas determinado los ajustes correctos para el idioma, crea el fichero /etc/profile:
cat > /etc/profile << "EOF" # Inicio de /etc/profile export LANG=[ll]_[CC].[charmap] export INPUTRC=/etc/inputrc # Fin de /etc/profile EOF
Las locales “C” (la que se tiene por defecto) y “en_US” (la recomendada para los usuarios de habla inglesa de los Estados Unidos) son diferentes.
Configurar el esquema del teclado, la fuente de pantalla y las variables de entorno relacionadas con las locales son los únicos pasos necesarios para soportar las codificaciones ordinarias de un byte y dirección de escritura de izquierda a derecha. Los casos más complejos (incluidas las locales basadas en UTF-8) necesitan pasos y parches adicionales debido a que muchas aplicaciones tienden a funcionar incorrectamente bajo tales condiciones. Estos pasos y parches no se incluyen en el libro LFS y dichas locales no están soportadas aún por el sistema LFS.