Wie definiere ich einen Alias ​​für einen Befehl, der im Shell-Skript verfügbar sein wird?

Wie definiere ich einen Alias ​​für einen Befehl, der im Shell-Skript verfügbar sein wird?

Hier ist ein Teil meiner.bashrc

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

und es ist mein Shell-Skript

#!/bin/sh
my_command blah blah blah

Es tritt ein Fehler auf

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

Wie definiert man also Aliase für den Befehl richtig?

Antwort1

Zwei Dinge, die in interaktiven Shells passieren (Erweiterung von Aliasnamen und Beschaffung Ihrer .bashrc), passieren nicht, wenn Sie ein Skript ausführen. Sie könnten versuchen, Folgendes oben in Ihr Skript einzufügen:

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

Sie könnten eine Umstellung mycommandauf eine Shell-Funktion in Erwägung ziehen. Dann müssten Sie die Alias-Erweiterung in Ihrem Skript nicht aktivieren.

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

Antwort2

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

Nach diesem Typ

source .bashrc

source .bashrcErhalten Sie nach der Eingabe eine Fehlermeldung?

Antwort3

Wenn Sie eine bestimmte Java-Version verwenden möchten, möchten Sie die Variable möglicherweise entsprechend definieren JAVA_HOMEund festlegen 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

Wenn es nur darum geht, einen Alias ​​festzulegen, ist die von Ihnen verwendete Syntax korrekt (natürlich mit einigen gültigen Befehlen).

alias lm="ls -l"

verwandte Informationen