No hay archivo bashrc en mi directorio de inicio

12

Esto es lo que anoté de mi conferencia:

  • Encuentra el archivo .bashrcen tu directorio personal
  • hacer vi .bashrc
  • Cuando coloque una carpeta de aplicación en algún lugar, asegúrese de que su dirección esté en la variable de ruta.

El problema es que no tengo un .bashrcarchivo en mi directorio de inicio. Solo hay un .bash_historyarchivo en mi casa.

Si voy a la raíz, hay un etc/bash.bashrcarchivo allí, pero lo que creo es que hará cambios para todos los usuarios y no solo para mí. Quiero agregar este camino solo para mí. No debería afectar a otros. Además, no hay ninguna $PATHvariable en ese archivo bashrc, por lo que estoy aún más confundido.

detraveller
fuente

Respuestas:

14

No olvides que es un archivo oculto dentro de tu directorio de inicio (no serías el primero en hacer un ls -ly pensar que no está allí).

Haz lo siguiente ...

ls -la ~/ | more

Debería haber un .bashrcen la primera página. Si no, solo créalo con

vi ~/.bashrc

Y simplemente escriba la siguiente línea en él.

PATH=$PATH:~/bin

O La mayoría de las distribuciones mantienen un .bashrcarchivo estándar /etc/skel/. Puede copiarlo en el directorio de inicio.

$cp /etc/skel/.bashrc ~
MangeshBiradar
fuente
OK, ya entiendo eso. En otras computadoras, puedo escribir lego y se inicia el software. En mi sistema, la carpeta lego está en mi ~/data/user1/bincarpeta. He agregado esta ruta al archivo .bashrc. ¿Qué debo hacer para que cuando escriba lego, se inicie el software? ¿Tengo que configurar un alias? Si es así, ¿cómo? alias lego='<What do i put here???>'
@detraveller ¿Ha agregado ~/data/user1/bina su variable de entorno PATH en el .bashrcarchivo? (agregue esta línea:) export PATH=$PATH:~/data/user1/bin- si es así, debería poder simplemente escribir legoen la terminal, y el programa debería comenzar.
AcId
Solo agregué PATH=$PATH:~/data/user1/bin. No mencionaste la exportación, así que no lo puse allí. Lo intentaré mañana cuando vaya a Uni.
detraveller
Pero me preguntaba cómo le digo a bash que esa legoes la palabra que inicia el software.
detraveller
11

La mayoría de las distribuciones mantienen un .bashrcarchivo estándar en el /etc/skel/que puede copiarlo en su directorio de inicio. De lo contrario, podría crear un nuevo .bashrcarchivo vacío en el directorio de inicio.

Ácido
fuente
4

Cree su propio archivo de inicio para shells interactivos

Acerca de los archivos de inicio de Bash

De la sección de INVOCACIÓN de man 1 bashdice:

Cuando se inicia un shell interactivo que no es un shell de inicio de sesión, bash lee y ejecuta comandos desde /etc/bash.bashrc y ~ / .bashrc, si existen estos archivos.

Tenga en cuenta que estos archivos de inicio son opcionales ; Bash no los requiere. Bash también diferencia entre shells de inicio de sesión y shells interactivos. Un shell interactivo se define así:

Un shell interactivo es uno que se inicia sin argumentos sin opciones y sin la opción -c cuya entrada estándar y error están conectados a los terminales (según lo determinado por isatty (3)), o uno que se inicia con la opción -i.

Muchas distribuciones obtienen un tipo de archivo de inicio del otro, pero algunas no lo hacen, por lo que este problema puede ser difícil de resolver canónicamente. Debe examinar todos sus archivos de inicio para ver cómo y cuándo ~/.bashrcse invocará en su sistema.

Crear su archivo de inicio de Shell interactivo por usuario

Si simplemente le falta un ~/.bashrcarchivo específico del usuario , simplemente cree uno. Bash lo invocará para shells que no sean de inicio de sesión (p. Ej., Shells iniciados sin la --loginbandera), o cada vez que fuerce la shell para que sea interactiva invocando con la -ibandera.

CodeGnome
fuente
0

Si no tiene un .bashrc, simplemente puede crear uno y agregar las líneas que desee, como:

PATH=$PATH:~/bin

para agregar su directorio bin de usuario al final de la ruta.

Pero debe tener cuidado si hay otros archivos de inicio. Las reglas sobre qué archivos se usan son bastante complejas, pero se detallan en la bashpágina del manual. Ingrese man bashen una línea de comando y busque INVOCATION.


fuente
0

Respuestas cortas:

  1. find ~ -maxdepth 1 -name '.bashrc'
  2. vi ~/.bashrc
  3. echo $PATH | grep ~/MyNewCoolProgramFolder

Detallado:
tomo una interpretación literal más cercana.

  1. "Encuentra el archivo .bashrc en tu directorio personal"
    Dado que existe el comandofind, quizás el editor traicionero te sugiera que lo uses:

    find ~ -maxdepth 1 -name '.bashrc'

    Busque en el directorio de inicio ~, descienda solo de un nivel (sin subdirección -maxdepth 1). Para todas las opciones escribe man find.
    La línea debajo de la hará el trabajo mínimo

    ls ~/.bashrc   

    Nota: En caso de ~/.bashrcque no exista , puede crearlo con un simple echo >> ~/.bashrc.

    El >>creará el archivo si no existe. Si en ~/.bashrccambio existe, agregará solo la salida inofensiva de vacío echo, evitando una eliminación involuntaria de un archivo tan crítico, que es incidentalmente difícil de restaurar sin una copia de seguridad.

    (Lo siguiente se debe a que rara vez tengo que honrar el significado de mi apodo, no lo ejecute si tiene dudas).

    if [ ! -f ~/.bashrc ] ; 
      then
         cp -i /etc/skel/.bashrc ~/.bashrc ;
      else ls -la ~/.bashrc; 
    fi || echo " # Auto Generated " >> ~/.bashrc
  2. "Hacer vi .bashrc" ¡
    Ahora puedes hacerlovi ~/.bashrc, la trampa aquí es que debes presionar:yqsalir!

  3. Carpeta de la aplicación y$PATH
    Cuando crea una carpeta de la aplicación, por ejemplo~/MyNewCoolProgramFolder, la línea siguiente solo verificará si está en$PATH:

    echo $PATH | grep ~/MyNewCoolProgramFolder

    No necesita agregar si ya está allí. Si es necesario, puede agregar al $PATHcon

    PATH=$PATH:~/MyNewCoolProgramFolder

    y para agregar esa línea ~/.bashrcsi desea que sea permanente.

  4. "4?!? ¿Cómo 4 si hubiera solo 3 puntos?" - Soluciones.
    Hay algunas soluciones para este último; supongamos queCoolDetravellerexisteun archivo ejecutable llamadosolo en su nueva carpeta de aplicación:

    (a) Puedes intentar ejecutarlo. Simplemente no comenzará si no está en el $PATH.

    CoolDetraveller: comando no encontrado

    (b) Puede probar su autocompletado . Comienza a escribir CoolDetravelley presiona Tab. Si está en el $PATH, se completará automáticamente (siempre si la finalización automática está habilitada).

    (c) Puede pedir que whichse use el comando bash shell si escribe el comando CoolDetraveller.

        which CoolDetraveller

    Nota: Si en su ruta de la aplicación que hay uno o más espacios, whichpodría ser incapaz de encontrar CoolDetraveller, aunque (aquí me honro mi seudónimo de nuevo) la finalización automática de CoolDetravellerun parámetro válido del whichcomando funcionará!

    Ad nauseam : no puedes preguntarwhereis CoolDetravellerporquewhereis

    tiene una ruta codificada, por lo que es posible que no siempre encuentre lo que está buscando

Hastur
fuente