私たちの会社には、ディレクトリにファイルをアップロードするためにLinuxにカスタムツールがインストールされています。oTools
新しい端末を開くと(すべてのフォルダから)oTools upload file
文書サーバーにアップロードされました。
ただし、このツールには複数のファイルを一度にアップロードするオプションはありません。だからこれのためにbashスクリプトを書こうとしています。これは私が作ったコードです。
#!/bin/sh
for file in ./folder/*
do
oTools upload $file
done
しかし、次のエラーがあります。
./upload-all.sh: oTools: 見つかりません
私のファイルを確認した結果、.bashrc
oToolsへのパスが含まれています。
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"