Perfil de MinGW Bash

37

Uso MinGW en Windows 7. Tengo un .bashrccon algunos alias. El archivo está en mi carpeta de inicio, que es donde MinGW me inicia, por lo que también cree que la carpeta es mi carpeta de inicio. No carga el contenido de la carpeta automáticamente. Tengo que ejecutar el bashcomando para que los alias funcionen.

He intentado renombrarlo .bash_profile. Esto solo empeoró las cosas, ya que no se cargó automáticamente y tampoco se cargó cuando ejecuté bashmanualmente.

¿Como puedo solucionar este problema?

KurToMe
fuente
Lo sentimos, la ruta debería haber sido: C: \ MinGW \ msys \ 1.0 \ home \ Your_Username_Here \ .profile

Respuestas:

48

bashprobablemente esté comenzando como un shell de inicio de sesión, en cuyo caso no se lee .bashrcautomáticamente. En cambio, se lee .bash_profile. Del manual de Bash :

Entonces, típicamente, su `~ / .bash_profile 'contiene la línea

if [ -f ~/.bashrc ]; then . ~/.bashrc; fi

después (o antes) de cualquier inicialización específica de inicio de sesión.

En resumen, cree un .bash_profilearchivo en su homedir y agregue la línea citada anteriormente.

Si en bashrealidad se le invoca como sh, entonces deberá usarlo en .profilelugar de .bash_profile(consulte la sección "Invocado con el nombre sh" del enlace del manual de Bash arriba).

jjlin
fuente
1
Gracias por la idea, aunque no funcionó. Como dije en la pregunta, poner los comandos de alias en .bash_profile no funciona en absoluto, por lo que parece que eso no se lee.
KurToMe
55
Esto me dio la idea de hacer exactamente lo que dijiste, excepto ponerlo en el archivo .profile. Por alguna razón funcionó (tal vez MinGW no usa Bash por defecto o algo loco). Si agrega esta opción a su respuesta, la marcaré como aceptada.
KurToMe
1
Ah, había un error tipográfico en mi pregunta que solucioné, lo estaba llamando .bash_rcen la pregunta, pero quise decir .bash_profile.
KurToMe
algo más conciso:[ -f ~/.bashrc ] && . ~/.bashrc
Rich Homolka
1
@KurToMe lo edité para cubrir tu situación.
jjlin
8

Estoy ejecutando Windows XP y tuve el mismo problema. Encontré CÓMO crear un entorno de compilación MSYS .

Esta es la línea importante:

Para ayudar a identificar la compilación de tiempo de ejecución y el directorio de trabajo actual, se puede agregar lo siguiente al ~/.profilearchivo.

En MinGW shell, creé .profile:

cd ~
touch .profile

Solía Notepad ++ para editar como un archivo de texto en formato Unix llamado .profiley lo ha guardado en mi directorio personal,C:\MinGW\msys\1.0\home\Your_Username_Here\.profile

Luego agregué mi alias y guardé:

alias n='nano -w'

Luego activé el acceso directo de MinGW Shell desde mi menú de inicio y ¡hurra, funcionó! nano sin envoltura de texto.

Espero que esto te ayude.

Bryan
fuente
Lo que estás diciendo no concuerda ... ~ significa el directorio de inicio de los usuarios ... luego tu c: \ MinGW \ msys \ 1.0 \ home ... eso no tiene ningún sentido que la tilde sea una referencia a la página de USUARIOS ... en ventanas que% userprofile% ...
Eddie B
2

No encontré que el .bash_profile funcionara para mí (no estaba siendo leído), así que tomé el enfoque .profile y lo puse dentro:

exec bash

Esto reemplaza mi shell actual con un nuevo comienzo de bash, que lee mi .bashrc

Estoy pensando que usar un .profile sugiere que sh se usa al iniciar sesión, no bash.

Paul Munsey
fuente
1

Para mí, para MINGW instalado con GIT, funcionó: .bash_profile poner en C:\Users\[user_name]

Este es también el directorio donde ~ apunta a shell (pwd).

Solo asi :)

Koshmaar
fuente
0

En la línea de @Koshmarr, pero ligeramente diferente. Mi mingw64, descargado de git-scm.com , se cargaría /c/Users/[user-name]al inicio. Sin embargo, mi unidad de casa (encontrada por cd ~) estaba adentro /h/. Puse un .bashrcy .bash_profileen mi ~disco y todo funcionó.

En .bash_profile:

    source ~/.bashrc;

Solo averigua dónde MINGW considera su hogar y ponlo .bash_profileallí.

Bryan
fuente
0

Cómo configurar archivos de inicialización de MSYS Bash

En el sistema operativo Windows, la forma en que señala los archivos de inicialización utilizados por Bash (es decir, perfil, bash_profile, bashrc) es diferente en comparación con el sistema operativo Linux.

La diferencia entre el sistema operativo Windows y Linux es su estructura de sistema de archivos, lo que conduce a una diferencia en las ubicaciones de archivos Bash y las convenciones de nombres de archivos.

Cómo configurar archivos de inicialización de MSYS Bash (es decir, perfil, bash_profile y bashrc)

1) En WINOS, abra la carpeta 'etc' ubicada aquí 'C: \ msys \ 1.0 \ etc \'. Nota. debería ver un archivo 'perfil' dentro de la carpeta 'etc'.

2) Guarde un archivo sin extensión de archivo (es decir, cuando guarde, establezca guardar como tipo en '.todos los archivos') con el nombre de archivo '.bash_profile' en 'C: \ msys \ 1.0 \ home \ USERNAME'. Nota. hay un punto como prefijo para el nombre del archivo (por ejemplo, '.bash_profile') como cabría esperar en la configuración de Linux OS Bash

2) Guarde un archivo sin extensión de archivo (es decir, cuando guarde, establezca guardar como tipo en '.todos los archivos') con el nombre de archivo '.bashrc' en 'C: \ msys \ 1.0 \ home \ USERNAME'. Nota. hay un punto como prefijo para el nombre del archivo (por ejemplo, '.bash_profile') como cabría esperar en la configuración de Linux OS Bash

4) Abra el archivo 'perfil' en un editor de texto (el texto sublime x es bueno) Nota: La ubicación del archivo 'perfil' es 'C: \ msys \ 1.0 \ etc \'

Dentro del archivo 'perfil', desplácese a la línea de texto al final del archivo (es decir, desplácese hasta la parte inferior), debería ver una línea de prueba que indica que Bash cambia su directorio actual a INICIO (en MSYS, INICIO es como se define en archivo 'perfil')

CD $HOME

5) Antes de la línea con el texto 'CD $ HOME' copie el siguiente código: al agregar este script dentro de 'profile' se le indicará a MSYS bash que ejecute el bash_profile # ---------------- -------------------------------------------------- --------- #modified BEGIN

# Note. -f is a flag in the file-test operator set of bash commands
#       that test whether file exists
echo '[i] INFO loading personal environment variables and startup   programs.... '
BASHRC="$HOME/.bash_profile"
if [ -f "$BASHRC" ]; then
  source "$BASHRC"
fi

#modified END
#---------------------------------------------------------------------------

6) Abra el archivo 'bash_profile' en un editor de texto ( Sublime Text x es bueno) y el final del archivo (en la parte inferior del archivo)

7) Copie el siguiente código al final del archivo: agregar este script dentro de '.bash_profile' le indicará a Bash que ejecute el '.bashrc'

#---------------------------------------------------------------------------
#modified BEGIN

# Note. -f is a flag in the file-test operator set of bash commands
#       that test whether file exists
BASHRC="$HOME/.bashrc"
if [ -f "$BASHRC" ]; then
  source "$BASHRC"
fi

#modified END

# ------------------------------------------------- --------------------------

8) OK, ahora escribamos un pequeño script dentro de '.bashrc' para ver si 'profile' está llamando a 'bash_profile' y si 'bash_profile' está llamando a '.bashrc'.

8.1) Piensa en el nombre de un comando que deseas crear. Usemos 't' para significar prueba

8.2) Abra la terminal Bash y escriba 't'. Bash debería responder 't: comando no encontrado': si no dice 't: comando no encontrado', repita 8.1 y 8.2 hasta que el nombre de su comando diga 'comando no encontrado'. No desea asignar un alias a un nombre de comando asignado a bash BAD !, por lo que debe ser 'comando no encontrado'

8.3) OK, 't' me dio un 't: comando no encontrado'. Ahora escribamos el script en '.bashrc'

8.4) En '.bashrc' escribe

# Use double quotes or bash will not write it
alias t="echo passed test"

8.5) Guarde el archivo '.bashrc' en 'C: \ msys \ 1.0 \ home \ USERNAME'

9) Casi allí. Ahora reinicie el terminal Bash y asegúrese de cerrar cualquier terminal Bash abierto anteriormente

10) Escriba el terminal 't'. Debería responder 'prueba aprobada'. De lo contrario, verifique cuidadosamente que el código se escribió correctamente (comience por verificar las comillas)

Algunas notas 1) 'nombre de archivo fuente' es lo mismo que '. nombre del archivo'

2) "" las comillas dobles permiten que las variables sean reemplazadas por su contenido, las comillas simples no

3) $ HOME es / home / USERNAME igual que ~ is / home / USERNAME

4) Siempre se prefiere una función sobre el alias 2

Para más detalles ver referencia de BASH

Soy nuevo en Bash. Así que no hay garantía de que hice esto de la mejor manera.

¡Buena suerte!

Átomo
fuente