
.bash_profile에 경로 설정과 별칭이 거의 없으며 이를 내보내는 중입니다.
예를 들어:
alias gcc=/abc/def/......./myrtgcc
export gcc
그리고 나는 사용하고 싶다myrtgcc다음 명령을 사용하여 터미널이나 Eclipse에서 C 프로그램을 컴파일합니다 gcc
. 나는 시스템이 실행될 것으로 기대합니다 myrtgcc somfile.c -o output
.
그러나 이는 사실이 아니다. 에 위의 별칭을 추가 .bash_profile
하고 시스템을 다시 시작(또는 사용 source .bash_profile
)한 후에도 변경 사항이 반영되지 않습니다. 터미널을 열고 을 입력하면 which gcc
eclipse /usr/bin/gcc
가 "GCC" 명령을 사용하면 동일한 을 다시 호출합니다 /usr/bin/gcc
.
어떻게 만드나요?myrtgcc명령에 대한 시스템 전체의 기본값gcc
답변1
다음과 같은 몇 가지 사항으로 인해 혼란스러워지고 있습니다.
which
별칭을 반영하지 않습니다. 따라서 별칭이 만들어졌는지 확인하려고 할 때 를 사용하는 것은which
도움이 되지 않습니다.alias
대신 인수 없이 실행하세요 . 유효한 모든 별칭이 표시됩니다. 예:anthony@Zia:~$ foo bash: foo: command not found anthony@Zia:~ [$?=127]$ alias foo='echo hi' anthony@Zia:~$ foo hi anthony@Zia:~$ which foo anthony@Zia:~ [$?=1]$
별칭은 다른 것에는 영향을 주지 않고 셸에만 영향을 줍니다.
make
,eclipse
등이 실행을 시도할 때gcc
쉘 별칭은 중요하지 않습니다. 별칭이 아닌 변수만 내보낼 수도 있습니다. 다음은 Perl을 실행하려는 Perl의 예입니다(다시 foo 별칭을 사용함).anthony@Zia:~$ perl -Mautodie=system -E 'system("foo")' "foo" failed to start: "No such file or directory" at (eval 6) line 12. at -e line 1
컴파일하는 대부분의 항목은
cc
,c++
등이 아닌 , 등을 실행합니다gcc
. 따라서 재정의했더라도gcc
아마도 작동하지 않았을 것입니다.
그렇다면 이를 달성하는 방법은 무엇입니까?
make
가장 좋은 접근 방식은 사용할 컴파일러를 알려주는 것입니다.
make CC=/path/to/myrtgcc target
/.configure
autoconf를 사용하는 프로그램을 실행할 때 환경에 이를 전달할 수도 있습니다 .
두 번째 접근 방식은 (예를 들어)에서 , 등 gcc
이라는 간단한 셸 스크립트를 만들고 이를 경로의 첫 번째에 배치하는 것입니다. 스크립트는 다음과 같습니다.cc
~/bin
#!/bin/sh
exec /path/to/myrtgcc "$@"
다음과 같은 것을 사용하여 PATH에 먼저 배치합니다 .bashrc
.
PATH="$HOME/bin:$PATH"
export PATH
답변2
쉘 문서를 읽어보세요. 프로필에는 두 가지 유형이 있습니다. .bash_profile은 이미 로그인한 상태에서 새 터미널을 여는 등의 작업을 수행할 때 실행됩니다. 다른 유형의 프로필은 시스템에 처음 로그인할 때 사용되며, 이상하게도 이를 로그인 프로필이라고 합니다. 하고 싶은 일을 하려면 .profile에 내용을 넣어보세요.