.profile에서 별명 설정이 작동하지 않는 이유는 무엇입니까?


11

내 프로필의 마지막 줄로 이것을 가지고 있습니다.

alias gl="cd /home/jrenner/glances/glances"

그러나 재부팅 후에도 gl을 입력 할 때 명령을 찾을 수 없습니다. 무슨 일이야? 올바른 사용자로 로그인했습니다.


어디에 입력하고 gl있습니까? 터미널? GUI?
토마스 워드

1
아무도 원래의 이유를 다루지 않았 습니까? 질문. .profile동일한 파일의 환경 변수가 작동하더라도 텍스트 콘솔 로그인, 그래픽 터미널 또는 기타 다른 항목에서 정의 된 별칭이 작동하지 않는다는 것을 확인할 수 있습니다 .
Daniel Mahler

@DanielMahler, 왜 이유가 있습니까?
Maged Saeed

답변:


4

나는 lpanebr의 아이디어가 효과가 있다고 확신하지만 더 우아한 해결책이 있습니다. 그 별칭 명령을 .bashrc 수행하십시오. 그렇게하는 것이거나 일부 사람들이 별칭 전용 파일을 추가하는 것을 선호합니다. 전화를 걸 .alias거나 무엇이든 추가 .alias하십시오..bashrc

@lpanelbr과 같은 형식을 지정할 수 있기를 바랍니다. 위키가 있는지 궁금합니다.


1
형식화 askubuntu는 markdown을 사용합니다. 자세한 내용은 askubuntu.com/editing-help 를 확인 하십시오.
saji89

1
.bashrc작동 .profile하지 않습니까? 또한 별칭이 .allias아닌 별칭 파일 이름을 선택한 이유 는 .alias무엇입니까?
Tom

# 1 내가 이해 한 바에 따르면 .bashrc는 bash에만 해당되며 .profile은 비 bash 명령 행에 고유합니다. # 2 무슨 뜻인지 모르겠습니다. 나는 결국 철자를 쓸 수있다.
Jason

7

.profile파일에 넣을 때 별칭이 항상 작동하지 않는 두 가지 관련 이유가 있습니다. 첫 번째는 .profile(또는 .bash_profile) 파일이 로그인 쉘에 대해서만 실행 된다는 것 입니다. X 아래의 터미널 창에서 bash를 시작하는 경우 터미널 에뮬레이터 (예 : gnome-termanl)가 bash를 로그인 쉘로 실행하지 않을 수 있습니다. [원하는 경우이 옵션을 변경할 수있는 옵션이 있지만 기본적으로 (gnome-termal의 경우) 로그인 셸로 실행하지 않아야합니다.]
셸은 대화식 셸이므로 .bashrc실행됩니다.

그러나 일반적으로 bash는 X 세션이 시작될 때 다시 로그인 쉘로 실행되었습니다. 따라서 별칭 명령 .profile이 있으면 PATH 등의 환경 변수 설정과 함께 실행됩니다. 터미널 창이 열리면 새 bash 인스턴스가 실행되어 프롬프트를 표시하고 해당 터미널 창에서 명령을 실행합니다. 환경 변수와 달리 별명은 하나의 bash 인스턴스에서 별명으로 시작될 수 없습니다. 따라서 별명은 새 쉘로 전달되지 않습니다.

이것을 보려면 다음 실험을 시도하십시오.

export ROBERT=bob
alias james=jimmy
echo $ROBERT
alias james
bash               #start a new bash instance
echo $ROBERT
alias james
exit               #end the new bash instance and revert to the original one
echo $ROBERT
alias james

참고 .bashrc가 로그인 쉘로 시작될 때 bash에 의해 실행되지 않습니다. 따라서에 대한 정보를 .bashrc제공 하지 않는 한 별칭을 사용하는 것이 항상 효과적인 것은 아닙니다 .profile. 이는 매우 일반적인 관행입니다.


검증 : 추가 source .bashrc.bash_profile작업에의 .bashrc에서 허용 별칭을 설정합니다.
Treefish Zhang

이것이 정답이어야합니다. 또한 우분투에서는에 별칭을 추가하십시오 ~/.bash_aliases. 그것이 올바른 방법입니다. (자세한 내용은 .bashrc 파일을 읽으십시오).
Emilio M.

0

echo $SHELL쉘 인터프리터로 bash ( )를 사용하는 경우 자신의 CD 기능을 정의하는 것이 가장 좋습니다 (또는 유일한 방법).

.bashrc파일을 편집 하고 끝에 다음을 추가하십시오.

# my custom functions:
function gl () {
   cd /home/jrenner/glances/glances/
}

다음과 같이 확장 할 수도 있습니다.

# my custom functions:
function cdw () {
   cd /home/jrenner/glances/glances/$1
   ls
}

하위 디렉토리로 직접 변경하고 내용을 나열하십시오.


1
좋은 제안 일지 모르지만 파일에 alias배치 된 지시문 .profile이 실패 하는 이유를 설명하지 않으므로 답이 아닙니다 .
Tom


0

우분투에서이 작업을 수행하는 올바른 방법은에 별칭을 추가하는 것 ~/.bash_aliases입니다. 파일이 없으면 작성하십시오.

이 파일 (있는 경우)은 default에서 호출되며 ~/.bashrc별칭은 터미널 에뮬레이터에서도 사용할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.