.bash_profile의 별칭은 시스템 전체에 반영되지 않습니다.

.bash_profile의 별칭은 시스템 전체에 반영되지 않습니다.

.bash_profile에 경로 설정과 별칭이 거의 없으며 이를 내보내는 중입니다.

예를 들어:

alias gcc=/abc/def/......./myrtgcc
export gcc

그리고 나는 사용하고 싶다myrtgcc다음 명령을 사용하여 터미널이나 Eclipse에서 C 프로그램을 컴파일합니다 gcc. 나는 시스템이 실행될 것으로 기대합니다 myrtgcc somfile.c -o output.

그러나 이는 사실이 아니다. 에 위의 별칭을 추가 .bash_profile하고 시스템을 다시 시작(또는 사용 source .bash_profile)한 후에도 변경 사항이 반영되지 않습니다. 터미널을 열고 을 입력하면 which gcceclipse /usr/bin/gcc가 "GCC" 명령을 사용하면 동일한 을 다시 호출합니다 /usr/bin/gcc.

어떻게 만드나요?myrtgcc명령에 대한 시스템 전체의 기본값gcc

답변1

다음과 같은 몇 가지 사항으로 인해 혼란스러워지고 있습니다.

  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]$
    
  2. 별칭은 다른 것에는 영향을 주지 않고 셸에만 영향을 줍니다. 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
    
  3. 컴파일하는 대부분의 항목은 cc, c++등이 아닌 , 등을 실행합니다 gcc. 따라서 재정의했더라도 gcc아마도 작동하지 않았을 것입니다.

그렇다면 이를 달성하는 방법은 무엇입니까?

make가장 좋은 접근 방식은 사용할 컴파일러를 알려주는 것입니다.

make CC=/path/to/myrtgcc target

/.configureautoconf를 사용하는 프로그램을 실행할 때 환경에 이를 전달할 수도 있습니다 .

두 번째 접근 방식은 (예를 들어)에서 , 등 gcc이라는 간단한 셸 스크립트를 만들고 이를 경로의 첫 번째에 배치하는 것입니다. 스크립트는 다음과 같습니다.cc~/bin

#!/bin/sh
exec /path/to/myrtgcc "$@"

다음과 같은 것을 사용하여 PATH에 먼저 배치합니다 .bashrc.

PATH="$HOME/bin:$PATH"
export PATH

답변2

쉘 문서를 읽어보세요. 프로필에는 두 가지 유형이 있습니다. .bash_profile은 이미 로그인한 상태에서 새 터미널을 여는 등의 작업을 수행할 때 실행됩니다. 다른 유형의 프로필은 시스템에 처음 로그인할 때 사용되며, 이상하게도 이를 로그인 프로필이라고 합니다. 하고 싶은 일을 하려면 .profile에 내용을 넣어보세요.

관련 정보