이 문제는 오랫동안 가지고 있습니다. 터미널 .profile을 실행하면 .bashrc 파일이 작동하지 않습니다 (실행되지 않음). 어디에서 문제의 원인을 찾아야하는지 나타낼 수 있습니까?
~/.profile
가되지 않으며 실행 권한이 필요하지 않습니다. (쉘이 소스를 실행하지만 실행하지는 않습니다). 시도 chmod -x ~/.profile
하고 여전히 작동되는지 확인합니다.
이 문제는 오랫동안 가지고 있습니다. 터미널 .profile을 실행하면 .bashrc 파일이 작동하지 않습니다 (실행되지 않음). 어디에서 문제의 원인을 찾아야하는지 나타낼 수 있습니까?
~/.profile
가되지 않으며 실행 권한이 필요하지 않습니다. (쉘이 소스를 실행하지만 실행하지는 않습니다). 시도 chmod -x ~/.profile
하고 여전히 작동되는지 확인합니다.
답변:
나는 .profile
달리지 않는 것과 비슷한 문제가 있었다 . ( 이 Apple StackExchange 답변에 설명 된대로 ) 파일 이 .bash_profile
있거나 .bash_login
파일 이 있으면 .profile
bash에서 무시됩니다.
이 Q & A가 수퍼 유저에게 가야 할 것 같습니다.
의 섹션 호출에 따르면 man 페이지 ,
/etc/profile
및 ~/.profile
대화 형 로그인 쉘 읽고있다~/.bashrc
대화 형 비 로그인 셸에 대해 읽습니다.~/.bashrc
대화 형 로그인 셸에서도 다른 UNIX 시스템이 자동으로 읽는 경우 시스템 전체 /etc/
profile
에 줄이 표시되어 있기 때문 ~/.bashrc
입니다. OS X의 시스템 전체 /etc/profile
에는 하나가 없습니다.
따라서 ~/.bashrc
대화식 로그인 셸에서도 실행하려면 줄을 포함해야합니다.
. ~/.bashrc
당신의 ~/.profile
.
터미널 환경 설정에서 '시작'창을 확인하십시오. 옵션이 있습니다 :
껍질은 다음과 같이 열립니다 :
- 기본 로그인 쉘 (/ usr / bin / login)
- 명령 (완료 경로)
'기본'을 선택했습니다 ... 사용자 정의 명령을 선택하면 그 요인이 될 수 있습니다.
다음으로 확인할 것은 쉘이 로그인 쉘로 시작되었는지 여부입니다. 내가 할 때 ps
목록을, 나는 참조 :
PID TTY TIME CMD
24088 ttys000 0:00.03 -sh
24614 ttys001 0:00.03 -sh
25127 ttys002 0:00.05 -sh
35544 ttys003 0:00.08 -sh
40926 ttys004 0:00.03 -sh
여기서 핵심 -
은 쉘 이름 앞에 있는 ' '입니다. 이것은 쉘에게 프로파일과 관련 내용을 실행하도록 지시합니다. 현재 창에 표시되지 않으면 설정이 표시 될 때까지 수수께끼를 채워야 할 수도 있습니다.
터미널 환경 설정의 설정 창에도 쉘 옵션이 나열됩니다. / bin / sh가 내 목록에 있습니다.
최악의 상황이 최악의 경우, 과거에 다른 비협조적인 시스템에서했던 것처럼 당신도 할 수 있습니다. 나는 윈도우에서 실행할 수있는 'loginsh'프로그램을 만들었고, ' -
' 로그인 쉘로 작동하도록 지시합니다.
#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);
}
( "stderr.h"
헤더 및 ' err_*
'루틴은 모든 곳에서 사용하는 오류보고 패키지입니다.이 jlss_basename()
기능은 기본적으로 POSIX에서 제공되는 시스템 제공 버전과 동일 <libgen.h>
합니다.)
위의 좋은 정보이지만 내가 가진 문제와 내가 찾은 해결책에 대해 구체적으로 이야기 할 것이라고 생각했습니다.
필요 : OSX 10.8 (ML)에서 PATH에 디렉토리를 추가하십시오.
문제 : 지침은 종종 "홈 디렉토리의 .profile을 수정"합니다. 기본적으로이 파일은 OSX에 존재하지 않기 때문에 약간 혼란 스럽습니다. 내보내기 디렉토리를 추가하여 기존 디렉토리에 새 디렉토리를 추가하면 작동하지 않기 때문에 혼동됩니다. 위에 덮여있다.
해결책 : 내 .bash_profile (홈 디렉토리에도 있음)에 내보내기 문을 추가했습니다.
나는이 고양이를 껍질을 벗기는 방법이 많이 있다고 확신한다. 이것은 나를 위해 일했습니다. 다소 자신감이 생겼습니다 : .bash_profile이 이미 존재하며 설치된 다른 소프트웨어 (예 : Ruby)가 수정했음을 알 수 있습니다. 더 나은 해결책이 있다면 기뻐할 것입니다!