Problemas com os comandos .bash_profile e terminal

3

Eu adicionei alguns dados ao meu .bash_profile para executar dois aliases ruby versão 19 e as gemas adequadas. Assim que adicionei os dados, não pude mais executar nenhum comando, como a porta de comando MacPorts , nem o comando mate para executar TextMate . Assim que eu desativei .bash_profile e .bash_login e mesmo .bash_history tudo ficou bem novamente. .bash_history foi regenerado e logo depois eu recebi .bash_profile reintegrado com meus aliases necessários, mas perdi a opção de executar esses comandos novamente. Aqui estão algumas das saídas de todos esses arquivos:

jaspersmbp:~ jasper$ cat .bash_profile
    alias ruby='/opt/local/bin/ruby1.9'
    alias gem='/opt/local/bin/gem'
jaspersmbp:~ jasper$ cat .bash_login
jaspersmbp:~ jasper$ cat .bashrc
    HISTFILESIZE=1000000000
    HISTSIZE=1000000
jaspersmbp:~ jasper$ cat .profile
    #Django path
    export PATH=/opt/local/bin:opt/local/sbin:/opt/local/lib/python2.4/site-packages/django/bin:$PATH
    # Apache alias
    alias apacherestart='sudo /opt/local/apache2/bin/apachectl -k restart'
    #Subversion OSX for Eclips Joomla Development
    export PATH=/opt/subversion/bin:$PATH
    #Test
    #echo $PATH
    ##
    # Your previous /Users/jasper/.profile file was backed up as /Users/jasper/.profile.macports-saved_2012-05-18_at_09:47:58
    ##
    # MacPorts Installer addition on 2012-05-18_at_09:47:58: adding an appropriate PATH variable for use with MacPorts.
    export PATH=/opt/local/bin:/opt/local/sbin:$PATH
    # Finished adapting your PATH environment variable for use with MacPorts.

Alguém sabe por que transformar .bash_profile active anula o uso de comandos como mate e port? Eu realmente preciso que o .bash_profile funcione para que eu possa usar aliases e eu preciso do comando de porta MacPorts para todos os tipos de software.

    
por rhand 10.06.2012 / 10:58

3 respostas

0

Parece que o MacPort está gerando seus arquivos de configuração e bagunçando seu PATH e tal. A maneira mais fácil de corrigir isso é fazendo você mesmo - desabilite a geração / criação do MacPort dos arquivos de ponto referentes ao seu caminho e aliases, remova os arquivos .bash_profile e .profile e acrescente o seguinte ao arquivo ~/.bashrc :

# define aliases
alias ruby='ruby1.9'
alias apacherestart='sudo apachectl -k restart'

# define hist properties
HISTFILESIZE=1000000000
HISTSIZE=1000000

# define path to programs
PATH=/opt/local/bin:opt/local/sbin:/opt/subversion/bin:/opt/local/apache2/bin/:/opt/local/lib/python2.4/site-packages/django/bin:$PATH

# define manpath
MANPATH=/opt/local/share/man:$MANPATH

# export env vars
export HISTFILESIZE HISTSIZE PATH MANPATH

Inicie um novo terminal e execute echo $PATH para verificar se tudo está lá e, em seguida, teste alguns dos comandos instalados em /opt/local/bin . Como todos os diretórios na instrução PATH= acima estão agora no seu PATH , você não precisa de aliases que usem caminhos absolutos para o binário - por exemplo, você não precisa mais do alias para gem , porque você pode execute gem .

Atualização: se o seu ~/.bashrc não for originado, coloque source ~/.bashrc em ~/.bash_profile limpo.

    
por 10.06.2012 / 13:42
1

Bash lê ~/.bash_profile se existir e ~/.profile se não existir. Portanto, quando você criou ~/.bash_profile , seu ~/.profile não foi mais usado. Seus aliases não são específicos para bater ao contrário de outros shells, então você pode colocá-los em ~/.profile .

Além disso, você inicia uma bash de logon interativo, bash lê ~/.bash_profile ou ~/.profile (o script de inicialização de sessão específico da bash ou o script de inicialização de sessão de shell genérico, se não existir), mas não ~/.bashrc (o script de inicialização do bash interativo). Então coloque essas duas linhas no seu ~/.bash_profile para carregar tudo como deveria ser:

. ~/.profile
case $- in *i*) . ~/.bashrc;; esac
    
por 11.06.2012 / 02:34
0

Bem, talvez seja $PATH problema? Você já verificou antes & depois?

    
por 10.06.2012 / 13:30