シェルスクリプトではコマンドが見つかりませんが、端末で実行できます

シェルスクリプトではコマンドが見つかりませんが、端末で実行できます

ant私のシェルスクリプトでは、またはmvコマンドを呼び出すことはできませんが、cp同じコマンドが端末で実行されます。以下は私のスクリプトです。

サンプル.sh ファイル

#! /bin/sh
cp filename.so filename_org.so
android update project -p .
ant clean
ant release

PATHはファイルに設定されます.bashrc

export PATH=$PATH:/usr/bin/

cpmvantスクリプトを介さずに端末でのみ機能します。

答え1

あなたのスクリプトはシェルスクリプト(/bin/sh)なので、PATHアイテムはインタラクティブシェル()のように読み込ま.bashrcれません。bash/bin/bash

特定のユーザーが実行しているスクリプトでエントリを使用できるようにするには、そのPATHユーザーのホームディレクトリにあるファイルにエントリを追加します。/bin/shPATH.profile


スクリプト内の各コマンドにフルパスを追加することもできます。

/bin/cp filename.so filename_org.so

または、PATHスクリプトの先頭に必要なすべての変数を含む変数を設定します。$PATHS

PATH=$PATH:/bin:/usr/bin:xxx
export PATH

答え2

小さなスクリプトがあれば、簡単な操作を実行し、できるだけ早く作業を完了できます。

コマンドラインを入力し、次のコマンドを使用します。

which your_command 

上記のコマンドは、コマンドを直接使用してパスを含む出力を印刷します。

答え3

bashrcにパスが設定されたバイナリを実行するときにも同じ問題が発生しました。

以下を実行して問題を解決しました。

バイナリを追加するか、/usr/bin のバイナリへのリンクを追加します。

ln -s [path_to_binary] [name_of_executable] 

その後、使用して確認してください。

ls -l

bashrcからエントリを削除できます。

関連情報