web-dev-qa-db-ja.com

シェルスクリプトでエイリアスが正常に実行されたかどうかを確認する方法

Condaをアクティブにするエイリアスが正常に実行されるかどうかを確認し、エラーが発生しないbashスクリプトがあります。エラーは発生せずにスクリプトは実行されますが、echoは出力されません。どうすれば修正できますか?

ぼくの ~/.bashrcファイルには

### shortcut to activate installed miniconda2
activate_conda() {
export PATH=$HOME/miniconda2/bin:/bin:/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games;
   }
alias activate_conda="activate_conda"

そして、私が次のbashスクリプトを実行すると

#!/bin/bash
#Check if activate_conda command runs successfully  

activate_conda
if [ $? -eq 0 ]; then
   echo "activate_conda was successful"         
   exit 0
else
   echo "activate_conda was not successful. 
         Please check your .bashrc file"                  
   exit 1
fi

#another function to check the same alias  
if activate_conda ; then
  echo "Command succeeded"
else
  echo "Command failed"
fi

スクリプトは実行されますが、エコーコマンドは出力されません。上記の関数は、ターミナルコマンドの実際のビルドに有効だと思います。しかし、私はaliasをコマンドとして実行しようとしています。

コマンドが成功したかどうかを確認するには?

2
Jenny

エイリアスもシェル関数もbashスクリプト内からアクセスできないため、スクリプトは失敗します。スクリプトでは、エイリアスの代わりに元のコマンドを使用するか、呼び出しスクリプトに関数定義を含めます。最終的に、複数のスクリプトで同じ関数を使用する場合は、関数のコードを別のファイルからスクリプトに取り込むことができます(help sourceターミナルで)。

コマンドが成功したかどうかを確認する方法については、 コマンドが成功したかどうかを確認する方法 を参照してください。

1
vanadium