Este problema eu tenho há muito tempo. Depois de executar o terminal .profile e o arquivo .bashrc não funciona (não é executado). Você poderia indicar onde eu deveria procurar formar uma fonte de problema?
verificar se estes arquivos têm permissões adequadas
sim ... você está certo, o motivo foi realmente estúpido - permissões incorretas chmod + x ~ / .profile e tudo está funcionando bem.
5
@xTrol: Isso não faz sentido, ~/.profilenão requer permissão de execução. (O shell o origina, não o executa). Tente chmod -x ~/.profilee veja se ainda funciona.
perfil completo de Keith Thompson
Respostas:
40
Eu tive um problema semelhante por .profilenão estar sendo executado. Acontece (como explicado nesta resposta do Apple StackExchange ) que, se você tiver .bash_profileou .bash_loginarquivos, .profileserá ignorado pelo bash.
/etc/profilee ~/.profileé lido para um shell de logon interativo e
~/.bashrc é lido para um shell interativo sem logon.
Se sua outra máquina UNIX lê automaticamente ~/.bashrcmesmo para um shell de logon interativo, é porque o sistema /etc/
profiletem uma linha que lê ~/.bashrc. Todo o sistema do OS X /etc/profilenão possui um.
Portanto, se você deseja executar ~/.bashrcaté mesmo para um shell de login interativo, precisa incluir uma linha
E para preencher a peça que falta aqui: Um shell de terminal (que era a pergunta do OP) é por padrão um shell de logon interativo.
Larsh
3
Tente fornecê-los "à mão":
source ~/.profile
e veja o que acontece. Observe que, como outros salientaram, .profile é obtido por shells de login, .bashrc por shells que não são de login; então tente um ou outro, não ambos.
O ponto chave aqui é o ' -' na frente do nome do shell; que diz ao shell para percorrer o perfil e coisas relacionadas. Se você não vê isso nas janelas atuais, pode precisar se preocupar com as configurações até conseguir.
O painel de configurações nas preferências do terminal também lista uma opção de shell. Eu tenho / bin / sh listado no meu.
Você não deveria precisar disso
Se o pior acontecer, você pode fazer o que eu fiz em outros sistemas não cooperativos no passado - eu criei um programa 'loginsh' que eu poderia executar no Windows e, por sua vez, executaria meu shell escolhido com o ' -' prefixo para dizer que funcione como um shell de login.
#include <string.h>#include <stdlib.h>#include <unistd.h>#include "stderr.h"#include "jlss.h"#ifndef DEFAULT_SHELL#define DEFAULT_SHELL "/bin/sh"#endif /* DEFAULT_SHELL */#ifndef MAX_SHELLBASENAME#define MAX_SHELLBASENAME 256#endif /* MAX_SHELLBASENAME */#ifndef lint
static const char sccs[]="@(#)$Id: loginsh.c,v 4.2 2005/06/22 19:44:07 jleffler Exp $";#endif
int main(int argc, char **argv){
char *shell;
char shellname[MAX_SHELLBASENAME];
err_setarg0(argv[0]);/*Which shell to use?*/if((shell = getenv("SHELL"))==(char *)0)
shell = DEFAULT_SHELL;/*Set up argv[0]in new argument list; reuse old argv space */
shellname[0]='-';
strcpy(&shellname[1], jlss_basename(shell));
argv[0]= shellname;/*Execv must work -- the shell must be an executable program */
execv(shell,&argv[0]);
err_syserr("cannot execute shell %s\n", shell);/* NOTREACHED */return(EXIT_FAILURE);}
(O "stderr.h"cabeçalho e as err_*rotinas ' ' são um pacote de relatório de erros que eu uso em todos os lugares. A jlss_basename()função é basicamente a mesma que as versões fornecidas pelo sistema, como as encontradas no POSIX <libgen.h>.)
Boas informações acima, mas pensei em compartilhar alguns detalhes sobre o problema que tive e a solução que encontrei.
A necessidade: Adicione um diretório ao PATH no OSX 10.8 (ML).
O problema: as orientações costumam "modificar o perfil no seu diretório pessoal". Um pouco confuso, pois, por padrão, esse arquivo não existe no OSX. Duplamente confuso, porque depois de adicionar uma instrução de exportação para anexar o novo diretório ao PATH existente ... ele não funciona. Coberto acima.
A solução: eu adicionei a instrução de exportação ao meu .bash_profile (também no diretório inicial).
Tenho certeza que existem muitas maneiras de esfolar esse gato. Este funcionou para mim. Um pouco inspirador de confiança: o .bash_profile já existia e pude ver que outro software instalado (por exemplo, Ruby) o havia modificado. Se houver uma solução melhor, ficarei feliz em ouvir sobre isso!
~/.profile
não requer permissão de execução. (O shell o origina, não o executa). Tentechmod -x ~/.profile
e veja se ainda funciona.Respostas:
Eu tive um problema semelhante por
.profile
não estar sendo executado. Acontece (como explicado nesta resposta do Apple StackExchange ) que, se você tiver.bash_profile
ou.bash_login
arquivos,.profile
será ignorado pelo bash.fonte
.bash_login
was added after I installedrvm
.Eu acho que essas perguntas e respostas devem ir para o Superusuário, mas de qualquer maneira:
De acordo com a seção INVOCATION da página de manual ,
/etc/profile
e~/.profile
é lido para um shell de logon interativo e~/.bashrc
é lido para um shell interativo sem logon.Se sua outra máquina UNIX lê automaticamente
~/.bashrc
mesmo para um shell de logon interativo, é porque o sistema/etc/ profile
tem uma linha que lê~/.bashrc
. Todo o sistema do OS X/etc/profile
não possui um.Portanto, se você deseja executar
~/.bashrc
até mesmo para um shell de login interativo, precisa incluir uma linhano seu
~/.profile
.fonte
Tente fornecê-los "à mão":
e veja o que acontece. Observe que, como outros salientaram, .profile é obtido por shells de login, .bashrc por shells que não são de login; então tente um ou outro, não ambos.
fonte
Nas preferências do seu terminal, verifique no painel 'Inicialização'. Você tem opções:
Eu escolhi o 'padrão' ... se você escolher o comando personalizado, isso pode ser um fator.
O próximo ponto a verificar é se o shell foi iniciado como um shell de logon. Quando faço uma
ps
listagem, vejo:O ponto chave aqui é o '
-
' na frente do nome do shell; que diz ao shell para percorrer o perfil e coisas relacionadas. Se você não vê isso nas janelas atuais, pode precisar se preocupar com as configurações até conseguir.O painel de configurações nas preferências do terminal também lista uma opção de shell. Eu tenho / bin / sh listado no meu.
Você não deveria precisar disso
Se o pior acontecer, você pode fazer o que eu fiz em outros sistemas não cooperativos no passado - eu criei um programa 'loginsh' que eu poderia executar no Windows e, por sua vez, executaria meu shell escolhido com o '
-
' prefixo para dizer que funcione como um shell de login.(O
"stderr.h"
cabeçalho e aserr_*
rotinas ' ' são um pacote de relatório de erros que eu uso em todos os lugares. Ajlss_basename()
função é basicamente a mesma que as versões fornecidas pelo sistema, como as encontradas no POSIX<libgen.h>
.)fonte
Boas informações acima, mas pensei em compartilhar alguns detalhes sobre o problema que tive e a solução que encontrei.
A necessidade: Adicione um diretório ao PATH no OSX 10.8 (ML).
O problema: as orientações costumam "modificar o perfil no seu diretório pessoal". Um pouco confuso, pois, por padrão, esse arquivo não existe no OSX. Duplamente confuso, porque depois de adicionar uma instrução de exportação para anexar o novo diretório ao PATH existente ... ele não funciona. Coberto acima.
A solução: eu adicionei a instrução de exportação ao meu .bash_profile (também no diretório inicial).
Tenho certeza que existem muitas maneiras de esfolar esse gato. Este funcionou para mim. Um pouco inspirador de confiança: o .bash_profile já existia e pude ver que outro software instalado (por exemplo, Ruby) o havia modificado. Se houver uma solução melhor, ficarei feliz em ouvir sobre isso!
fonte