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

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

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

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



답변

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

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


답변

.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. 이는 매우 일반적인 관행입니다.


답변

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
}

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


답변

$ bash #start a new bash instance

내 서버에 문제가있었습니다. source .profile어떤 이유로 단순 하지 않았다


답변

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

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


답변