
He vistoestepero no me funciona. No estoy usando la versión de bash de Git sino la que viene con cygwin, por lo que podría ser parte del problema. Así es como configuré mi pestaña en Console2:
Title: bash.exe
Shell: C:\cygwin\bin\bash.exe --login -i
Startup dir: %HOMEDRIVE%%HOMEPATH%
Esta es mi entrada de registro:
Directory
shell
Console2
Open Console2 Here
command
"C:\Console2\Console.exe" -d "%1"
bash siempre comienza en mi directorio de inicio en lugar del directorio en el que estoy haciendo clic, luego tengo que cd /cygdrive/d/code
... etc. Intenté eliminar el valor en el campo "Directorio de inicio", cambiándolo a %1, %1% sin suerte.
yo también lo intentéesta soluciónpero tampoco me funcionó:
Title: bash.exe
Shell: C:\cygwin\bin\bash.exe -l
Registro:
Directory
shell
Console2
Open Console2 Here
command
"C:\Console2\Console.exe" -d "%V"
Las soluciones anteriores funcionan para las versiones de bash.exe y sh.exe que se incluyen con Git, pero no para las versiones que se incluyen con cygwin por algún motivo. Sigo buscando una razón para esto.
EDITAR
Seleccioné una respuesta a continuación, pero creo que la segunda solución anterior habría funcionado si hubiera creado el archivo .profile en la carpeta correcta. Seguí intentando crearlo en mi directorio de inicio normal en lugar del directorio de inicio utilizado por cygwin, razón por la cual nunca ejecutó el script. Esto me llevó a creer que el archivo .profile era innecesario. La respuesta que seleccioné (¡gracias Hugh!) explica claramente cómo bash utiliza cada uno de los scripts (.bash_profile, .bash_login, .profile y .bashrc), lo que me ayudó a darme cuenta de que los estaba colocando en el lugar equivocado.
Respuesta1
Desde elmanual,
Cuando se invoca Bash como un shell de inicio de sesión interactivo, o como un shell no interactivo con la opción --login, primero lee y ejecuta comandos del archivo /etc/profile, si ese archivo existe.
/etc/profile
por defecto contiene el siguiente código:
# Make sure we start in home unless invoked by CHERE
if [ ! -z "${CHERE_INVOKING}" ]; then
unset CHERE_INVOKING
else
cd "${HOME}" || echo "WARNING: Failed attempt to cd into ${HOME}!"
fi
Entonces, una solución sería crear un archivo por lotes de Windows que establezca la variable de entorno CHERE_INVOKING
antes de iniciar bash. Eso no es muy bueno.
Próximo,
Después de leer ese archivo, busca ~/.bash_profile, ~/.bash_login y ~/.profile, en ese orden, y lee y ejecuta comandos desde el primero que existe y es legible.
Estos scripts de perfil ejecutan de forma predeterminada su ~/.bashrc
script si existe. Poniendo cd -
al final de mis .bashrc
trabajos para mí (con el último Console2 y Cygwin bash):
echo 'cd -' >> ~/.bashrc
Por cierto, invoco Console2 ( Console.exe
) sin argumentos: el Explorador de Windows garantiza que se inicie en el directorio en el que hice clic derecho. Estoy usando XP pero dudo que MS cambie este comportamiento en versiones posteriores de Windows. También dejo en blanco la opción "directorio de inicio" para mi pestaña Bash.