Bashスクリプトではコマンドを使用できません。

Bashスクリプトではコマンドを使用できません。

私たちの会社には、ディレクトリにファイルをアップロードするためにLinuxにカスタムツールがインストールされています。oTools新しい端末を開くと(すべてのフォルダから)oTools upload file文書サーバーにアップロードされました。

ただし、このツールには複数のファイルを一度にアップロードするオプションはありません。だからこれのためにbashスクリプトを書こうとしています。これは私が作ったコードです。

#!/bin/sh

for file in ./folder/*
do
  oTools upload $file
done

しかし、次のエラーがあります。

./upload-all.sh: oTools: 見つかりません

私のファイルを確認した結果、.bashrcoToolsへのパスが含まれています。

alias oTools="/home/user/folder/oTools-cli"

また、スクリプトにフルパス(上記のパス、つまり.bashrcファイルのパス)を入力しようとしましたが、同じ問題が発生しました。ls私がインストールしたツールの代わりに同じコードを実行してみましたが、うまくいきました。

それでは、私のカスタムツールを認識するbashスクリプトをどのように作成できますか?

ベストアンサー1

少なくとも2つの問題に直面しています。

  • シェルが非対話型の場合、expand_aliasesシェルオプションの設定に使用されない限り、エイリアスは拡張されませんshopt

  • .bashrc通常、スクリプト構成(非対話型シェルとも呼ばれる)ではなく、対話型シェル構成が保存されます。

いくつかの解決策があります:

# Set expand_aliases option and add the alias (in your script)
shopt -s expand_aliases
alias oTools="/home/user/folder/oTools-cli"

# Create a function instead of an alias (in your script)
oTools() { /home/user/folder/oTools-cli "$@"; }

# Add /home/user/folder to your PATH (in your .profile)
PATH="/home/user/folder:$PATH"

おすすめ記事