コマンドはシェルスクリプト経由では見つかりませんが、端末で動作します


17

私の.shファイルでは、antまたはmvまたはcpコマンドを呼び出すことはできませんが、同じコマンドがterminal.belowで実行されます

sample.shファイル

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

.bashrcファイルに追加されたパス。

export PATH=$PATH:/usr/bin/

cp、mv、antはscirpt経由ではなく端末でのみ動作します。


1
...私たちにyur問題についての詳細情報を与える
ルバン精通

android/ ant、これらのバイナリは/ usr / binにありますか?
UVV 14年

回答:


13

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

あなたの作るためにPATHへのエントリーが可能な/bin/sh特定のユーザーによって実行されるスクリプト、追加PATHのエントリを.profileそのユーザのホームディレクトリ内のファイル。


さらに、スクリプト内の各コマンドの完全なパスを追加できます。

/bin/cp filename.so filename_org.so

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

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

2
正しい分析ですがPATH、適切な解決策については言及していませんでした。これはの代わりに適切な場所に設定することです.bashrc。スクリプトをbashスクリプトに変更しても違いはありません.bashrc。インタラクティブシェルによってのみロードされます。
ジル 'SO-悪であるのをやめる' 14年

2

パスがbashrcに設定されているバイナリの実行中に同じ問題が発生しました。

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

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

ln -s [path_to_binary] [name_of_executable] 

次に使用して確認してください

ls -l

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


0

小さなスクリプトがあり、できるだけ早く作業を終了する場合、1つの簡単なことができます

以下のコマンドラインで使用してください

which your_command 

上記のコマンドは、そのコマンドを使用するパスを含む出力を直接出力します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.