O que acontece exatamente quando digito 'bash' na linha de comando do Terminal no Mac OSX?

6

Eu tenho um alias que adicionei ao .bashrc e ele só é ativado no Terminal depois que eu executo o comando 'bash'. Eu sinto que eu deveria saber o que está acontecendo aqui, mas eu não sei. :)

    
por Chris Shattuck 08.09.2011 / 05:58

3 respostas

2

Dependendo da versão do OS X, você está usando seu shell padrão e não pode ser bash. Você pode verificar isso digitando (antes de executar o 'bash'):

$ echo $SHELL
/bin/zsh

Você pode mudar seu shell padrão para bash, assim você não precisa continuar executando o comando seguindo as instruções aqui:

link

De @ chopper3

for <=10.4 - netinfo manager, /users/whoever/shell

for 10.5=> - SysPrefs, accounts, control-click on user, select advanced options, edit login shell field.

Para responder sua pergunta, o .bashrc é usado apenas pelo shell bash. Se você quiser, pode descobrir qual shell está usando e adicionar o alias ao .tcshrc ou .zshrc, em vez de alterar tudo para usar o bash.

Mais informações sobre o que é um shell:

link

e bash especificamente:

link

    
por 08.09.2011 / 08:39
4

De man bash :

When an interactive shell that is not a login shell is started, bash reads and executes commands from ~/.bashrc, if that file exists.

Ênfase minha

No OS X, todas as janelas e guias do Terminal executam shells de login, o que equivale a você executando bash --login em vez de bash . Por conseguinte, ~/.bashrc é ignorado, a menos que explicitamente source d de, e. ~/.bash_profile :

When bash is invoked as an interactive login shell, [...] it first reads and executes commands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable.

Basta criar ~/.bash_profile , se não existir, e adicionar a seguinte linha:

. .bashrc

Em seguida, .bashrc será carregado mesmo para sessões de login.

    
por 08.09.2011 / 09:17
1

O alias não funciona depois você executa bash - funciona enquanto você está executando bash .

Basicamente, ~/.bashrc é um arquivo que contém diretivas que são executadas por bash sempre que é iniciado. O shell padrão para todas as versões recentes do Mac OS X é bash , portanto, ele é executado toda vez que você abre um Terminal. O bash , no entanto, não sabe magicamente reler seus arquivos de configuração quando você os edita, portanto, o alias não funciona imediatamente quando você o adiciona a ~/.bashrc . O que você faz quando executa bash em seu shell existente é criar outra instância de bash (que irá ler o arquivo de configuração modificado, porque ele está iniciando). Observe que sua instância original de bash ainda está lá, sendo executada atrás do bash que você executou manualmente. Se você fechar o shell (com o comando exit ), você retornará ao seu shell original (se você fechá-lo, receberá uma mensagem "processo concluído" do terminal).

Então, para voltar ao seu problema: seu alias não funcionará até bash reler sua configuração. Você pode fazer isso iniciando bash novamente (criando outro shell dentro do shell existente executando bash ou fechando e abrindo o terminal) ou , você pode usar o source comando para obter bash para reler um arquivo. Então, depois de editar ~/.bashrc , faça source ~/.bashrc - alias funcionando, sem iniciar bash novamente.

    
por 08.09.2011 / 09:13