쉘 스크립트에서 사용할 수 있는 명령의 별칭을 어떻게 정의합니까?

쉘 스크립트에서 사용할 수 있는 명령의 별칭을 어떻게 정의합니까?

여기 내 일부가 있습니다..bashrc

alias my_command="my_command -1 -2 -3"

그리고 내 쉘 스크립트

#!/bin/sh
my_command blah blah blah

오류가 발생합니다

./aa: line 2: my_command: command not found

그렇다면 명령에 대한 별칭을 올바른 방식으로 정의하는 방법은 무엇입니까?

답변1

대화형 셸에서 발생하는 두 가지 작업(별칭 확장 및 의 소싱 .bashrc)은 스크립트를 실행할 때 발생하지 않습니다. 스크립트 상단에 다음을 추가해 볼 수 있습니다.

source ~/.bashrc         # To get the alias
shopt -s expand_aliases  # To allow alias expansion in your script

mycommand쉘 기능으로 변경하는 것을 고려할 수도 있습니다 . 그러면 스크립트에서 별칭 확장을 활성화할 필요가 없습니다.

mycommand () {
    my_command -1 -2 -3 "$@"
}

답변2

alias my_command="/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.9.x86_64/bin/java"

이 유형 이후

source .bashrc

입력한 후 source .bashrc오류가 발생합니까?

답변3

특정 버전의 Java를 사용하려는 경우 그에 따라 변수를 정의 JAVA_HOME하고 설정할 수 있습니다 PATH.

export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.9.x86_64/bin/java
export PATH=$PATH:export PATH=$PATH:/usr/java/jdk1.5.0_07/bin

단지 별칭 설정에 관한 것이라면 사용한 구문이 올바른 것입니다(물론 일부 유효한 명령도 포함).

alias lm="ls -l"

관련 정보