Perfil do MinGW Bash


37

Eu uso o MinGW no Windows 7. Eu tenho um .bashrccom alguns aliases. O arquivo está na minha pasta pessoal, onde o MinGW me inicia, e também acredita que a pasta é minha pasta pessoal. Não carrega o conteúdo da pasta automaticamente. Eu tenho que executar o bashcomando para obter os aliases para trabalhar.

Eu tentei renomeá-lo para .bash_profile. Isso só piorou as coisas, pois não foi carregado automaticamente e também não foi carregado quando eu corri bashmanualmente.

Como posso resolver este problema?


Desculpe, o caminho deveria ter sido: C: \ MinGW \ msys \ 1.0 \ home \ Your_Username_Here \ .profile

Respostas:


48

bashprovavelmente está começando como um shell de logon, caso em que não é lido .bashrcautomaticamente. Em vez disso, ele lê .bash_profile. No manual do Bash :

Então, normalmente, seu `~ / .bash_profile 'contém a linha

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

depois (ou antes) de qualquer inicialização específica de login.

Então, em resumo, crie um .bash_profilearquivo em sua casa e adicione a linha citada acima.

Se você bashestá realmente sendo chamado como sh, precisará usar em .profilevez de .bash_profile(consulte a seção "Invocado com nome sh" no link do manual do Bash acima).


1
Obrigado pela ideia, mas não funcionou. Como eu disse na pergunta, colocar os comandos de alias no .bash_profile não funciona, então parece que isso não é lido.
KurToMe 27/03

5
Isso me deu a idéia de fazer exatamente o que você disse, exceto colocá-lo no arquivo .profile. Por alguma razão que funcionou (talvez o MinGW não use o Bash por padrão ou algo louco). Se você adicionar esta opção à sua resposta, eu a marcarei como aceita.
KurToMe 27/03

1
Ah, houve um erro de digitação na minha pergunta que eu consertei, estava chamando .bash_rcna pergunta, mas eu quis dizer .bash_profile.
KurToMe 27/03/12

um pouco mais conciso:[ -f ~/.bashrc ] && . ~/.bashrc
Rich Homolka 27/03

1
Editei para cobrir sua situação.
jjlin

8

Estou executando o Windows XP e tive o mesmo problema. Encontrei HOWTO Criar um ambiente de compilação MSYS .

Esta é a linha importante:

Para ajudar a identificar a compilação do tempo de execução e o diretório de trabalho atual, o seguinte pode ser adicionado ao ~/.profilearquivo.

No shell MinGW, eu criei .profile:

cd ~
touch .profile

Usei o Notepad ++ para editá-lo como um arquivo de texto no formato Unix chamado .profilee salvei-o no meu diretório pessoal,C:\MinGW\msys\1.0\home\Your_Username_Here\.profile

Em seguida, adicionei meu alias e salvei:

alias n='nano -w'

Então eu iniciei o atalho do MinGW Shell no meu menu Iniciar e, viva, funcionou! nano sem quebra de texto.

Espero que isso ajude você.


O que você está dizendo não é ativado ... ~ significa o diretório inicial do usuário ... então você indica c: \ MinGW \ msys \ 1.0 \ home ... que não faz sentido o til ser uma referência a a usuários domésticos ... em janelas que% userprofile% ...
Eddie B

2

Não encontrei o .bash_profile para trabalhar para mim (ele não estava sendo lido), então peguei a abordagem .profile e a coloquei:

exec bash

Isso substitui meu shell atual por um novo começo do bash, que lê meu .bashrc

Eu estou pensando que usando um .profile sugere que sh é usado no logon, não no bash.


1

Para mim, para o MINGW instalado com o GIT, trabalhei: .bash_profile colocado em C:\Users\[user_name]

Este também é o diretório em que ~ aponta para o shell (pwd).

Bem desse jeito :)


0

Ao longo das linhas de @Koshmarr, mas um pouco diferente. Meu mingw64, baixado do git-scm.com , carregava /c/Users/[user-name]na inicialização. No entanto, a minha unidade de casa (encontrado cd ~) estava em /h/. Coloquei um .bashrce .bash_profilena minha ~unidade e tudo funcionou.

Em .bash_profile:

    source ~/.bashrc;

Basta descobrir onde o MINGW considera o lar e colocar o .bash_profilelocal.


0

Como configurar os arquivos de inicialização do MSYS Bash

No sistema operacional Windows, a maneira como você aponta para os arquivos de inicialização usados ​​pelo Bash (ou seja, perfil, perfil_de_base, bashrc) é diferente em comparação ao sistema operacional Linux.

A diferença entre o sistema operacional Windows e Linux é a estrutura do sistema de arquivos, o que leva a diferenças nos locais dos arquivos Bash e nas convenções de nomenclatura de arquivos.

Como configurar os arquivos de inicialização do MSYS Bash (por exemplo, profile, bash_profile e bashrc)

1) No WINOS, abra a pasta 'etc' localizada aqui 'C: \ msys \ 1.0 \ etc \'. Nota. você deverá ver um arquivo 'profile' dentro da pasta 'etc'.

2) Salve um arquivo sem extensão de arquivo (ou seja, quando você salvar, defina o tipo de salvamento como '.todos os arquivos') com o nome de arquivo '.bash_profile' como 'C: \ msys \ 1.0 \ home \ USERNAME'. Nota. existe um ponto como prefixo para o nome do arquivo (por exemplo, '.bash_profile') como seria de esperar na configuração do Linux OS Bash

2) Salve um arquivo sem extensão de arquivo (ou seja, quando você salvar, defina o tipo de salvamento como '.todos os arquivos') com o nome de arquivo '.bashrc' como 'C: \ msys \ 1.0 \ home \ USERNAME'. Nota. existe um ponto como prefixo para o nome do arquivo (por exemplo, '.bash_profile') como seria de esperar na configuração do Linux OS Bash

4) Abra o arquivo 'profile' em um editor de texto (texto sublime x é bom) Nota: O local do arquivo de 'profile' é 'C: \ msys \ 1.0 \ etc \'

Dentro do arquivo 'profile', role até a linha de texto no final do arquivo (ou seja, role até o final). Você verá uma linha e um teste indicando o Bash para alterar seu diretório atual para HOME (no MSYS, HOME é como definido em arquivo 'profile')

CD $HOME

5) Antes da linha com o texto 'CD $ HOME', copie o seguinte código - adicionar este script dentro de 'profile' fará com que o MSYS bash execute o 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 o arquivo 'bash_profile' em um editor de texto ( Sublime Text x é bom) e o final do arquivo (na parte inferior do arquivo)

7) Copie o seguinte código no final do arquivo - adicionar esse script em '.bash_profile' instruirá o Bash a executar o '.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, agora vamos escrever um pequeno script dentro de '.bashrc' para ver se 'profile' está chamando 'bash_profile' e se 'bash_profile' está chamando '.bashrc'.

8.1) Pense no nome de um comando que você deseja criar. Vamos usar 't' para significar teste

8.2) Abra o terminal Bash e digite 't'. O Bash deve responder 't: comando não encontrado' - se não disser 't: comando não encontrado', repita 8.1 e 8.2 até o nome do seu comando dizer 'comando não encontrado'. Você não deseja alias um nome de comando atribuído ao bash BAD !, portanto, deve ser 'comando não encontrado'

8.3) OK, 't' me deu um comando 't: não encontrado'. Agora vamos escrever o script em '.bashrc'

8.4) Em '.bashrc' escreva

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

8.5) Salve o arquivo '.bashrc' em 'C: \ msys \ 1.0 \ home \ USERNAME'

9) Quase lá. Agora reinicie o terminal Bash e feche todos os terminais Bash abertos anteriormente

10) Digite o terminal 't'. Ele deve responder 'passou no teste'. Caso contrário, verifique cuidadosamente se o código foi escrito corretamente (comece verificando aspas)

Algumas notas 1) 'nome do arquivo de origem' é o mesmo que '. nome do arquivo'

2) "" aspas duplas permitem que variáveis ​​sejam substituídas por seu conteúdo aspas simples não

3) $ HOME é / home / USERNAME igual a ~ is / home / USERNAME

4) Uma função é sempre preferida ao alias 2

Para mais detalhes, consulte a referência BASH

Eu sou novo no Bash. Portanto, não há garantia de que fiz isso da melhor maneira.

Boa sorte!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.