내 프로필의 마지막 줄로 이것을 가지고 있습니다.
alias gl="cd /home/jrenner/glances/glances"
그러나 재부팅 후에도 gl을 입력 할 때 명령을 찾을 수 없습니다. 무슨 일이야? 올바른 사용자로 로그인했습니다.
.profile
동일한 파일의 환경 변수가 작동하더라도 텍스트 콘솔 로그인, 그래픽 터미널 또는 기타 다른 항목에서 정의 된 별칭이 작동하지 않는다는 것을 확인할 수 있습니다 .
내 프로필의 마지막 줄로 이것을 가지고 있습니다.
alias gl="cd /home/jrenner/glances/glances"
그러나 재부팅 후에도 gl을 입력 할 때 명령을 찾을 수 없습니다. 무슨 일이야? 올바른 사용자로 로그인했습니다.
.profile
동일한 파일의 환경 변수가 작동하더라도 텍스트 콘솔 로그인, 그래픽 터미널 또는 기타 다른 항목에서 정의 된 별칭이 작동하지 않는다는 것을 확인할 수 있습니다 .
답변:
나는 lpanebr의 아이디어가 효과가 있다고 확신하지만 더 우아한 해결책이 있습니다. 그 별칭 명령을 .bashrc
수행하십시오. 그렇게하는 것이거나 일부 사람들이 별칭 전용 파일을 추가하는 것을 선호합니다. 전화를 걸 .alias
거나 무엇이든 추가 .alias
하십시오..bashrc
@lpanelbr과 같은 형식을 지정할 수 있기를 바랍니다. 위키가 있는지 궁금합니다.
.bashrc
작동 .profile
하지 않습니까? 또한 별칭이 .allias
아닌 별칭 파일 이름을 선택한 이유 는 .alias
무엇입니까?
.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에서 허용 별칭을 설정합니다.
~/.bash_aliases
. 그것이 올바른 방법입니다. (자세한 내용은 .bashrc 파일을 읽으십시오).
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
}
하위 디렉토리로 직접 변경하고 내용을 나열하십시오.
alias
배치 된 지시문 .profile
이 실패 하는 이유를 설명하지 않으므로 답이 아닙니다 .
$ bash #start a new bash instance
내 서버에 문제가있었습니다. source .profile
어떤 이유로 단순 하지 않았다
gl
있습니까? 터미널? GUI?