그래서 나는 실험을 시도하고 alias
in을 만들었습니다 .bashrc
. 그러나 명령을 테스트하면 다음과 같은 결과가 나타납니다.
[rkahil@netmon3 ~]$ menu
-bash: menu: command not found
.bashrc
파일에 내가 가진 것은 다음과 같습니다 .
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# User specific aliases and functions
alias menu='./menuScript.sh'
alias vi='vim'
재미있는 것은 별명을 만들었을 때 vi
효과적이었습니다. 그러나 메뉴는 그렇지 않습니다. UnixStackExchange에서 이전 게시물을 조회하고 다른 게시물을 따르려고 시도했지만 아무 소용이 없습니다. 다른 사람이 제안이 있습니까?
답변
로 시도해야합니다 alias menu='bash ./menuScript.sh'
. 나는 현재 Linux 시스템에 있지 않으므로 직접 테스트 할 수는 없지만 작동해야합니다. 별명을 호출하면 경로와 함께 무엇을해야할지 알 수 없으므로 bash
시작 부분에를 포함시켜야합니다 .
터미널을 재설정하면 변경 후 도움이됩니다.
답변
당신이 할 때
alias menu='./menuScript.sh'
“해당 파일”이라고하는 별명을 작성하지만 실제로는이 파일로 수행 할 작업을 말하지 않습니다.
그러나 당신이 할 경우
alias menu='source ./menuScript.sh'
또는
alias menu='. ./menuScript.sh'
그 파일을 실행 한다고 말하고 있습니다 .
답변
변경 후 ~ / .bashrc 파일을 소싱하는 것을 기억 했습니까? 컴퓨터를 다시 시작하거나 파일을 소싱 한 후에 .bashrc 파일에 변경 사항이 적용되기 때문입니다.
답변
그것이 작동하는 이유 vim
는 직접 경로없이 이미 호출 가능한 프로그램이기 때문입니다. vim
이미 “프로그램으로 실행하고 싶다”고 명시 적으로 말할 필요는 없습니다 . 명령을 받으면 vim
파일을 이동 /usr/bin/vi
하거나 실제 프로그램이있는 곳이면 어디든지 OS에 하드 코딩됩니다 .
답변
별명에는 두 가지 문제가 있습니다
alias menu='./menuScript.sh'
-
별명을 호출 할 때 특정 디렉토리에 있어야합니다.
menuScript.sh
존재하지 않는 디렉토리에 있으면 별칭이 실행되지 않습니다.menuScript.sh
별칭을 정의 할 때 스크립트에 대한 전체 절대 경로를 지정하면 더 좋습니다 ( 예 :alias menu="$HOME/local/bin/menuScript.sh"
또는 유사합니다.
-
다른 사람들이 이미 말했듯이, 별칭이 실패하는 또 다른 이유는 스크립트가 실행 가능하지 않거나 유효하지 않은 행이기 때문입니다
#!
. 스크립트가 실행 가능한지 확인하십시오chmod +x menuScript.sh
스크립트의 첫 번째 줄은
#!/bin/bash
또는 시스템에서 경로가
bash
무엇이든 (또는 스크립트가 작성된 쉘) 무엇이든.