さまざまなスクリプトを含むディレクトリを私のPATHに追加しようとしましたが、ディレクトリの外部から呼び出すとスクリプトは実行されません。

さまざまなスクリプトを含むディレクトリを私のPATHに追加しようとしましたが、ディレクトリの外部から呼び出すとスクリプトは実行されません。

更新:より多くの関連情報が含まれています。これを含めることを提案していただきありがとうございます!

私はLinuxに初めてアクセスし、他の人が作成したスクリプトを実行しようとしています。私は最近変数について知り、端末のどこからでも呼び出せるように変数$PATHにスクリプトフォルダを追加する必要があることに気づきました。$PATHしかし、スクリプトを含むフォルダを変数に追加しても、その中のスクリプト$PATHは認識されません。

下部に含まれるようにテキストエディタでbashrcファイルを編集しました。

#Modify $PATH
export PATH="/home/eli/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

私のスクリプトは次の場所にあり、フルパス/home/eli/binを指定しないと、このリポジトリが私の$ PATH変数にあってもスクリプトは実行されません。

これが私の$ PATH変数です。

(によると)eli@eli-XPS-13-7390-2-in-1:~$エコ$PATH
/home/eli/miniconda3/bin:/home/eli/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games :/usr/ローカル/ゲーム

私のスクリプト権限は次のとおりです。

(によると)eli@eli-XPS-13-7390-2-in-1:~$ls -al ~/bin/trim2bRAD_2barcodes_noAdap.pl
-rwxr-xr-x 1 eli eli 3064 2018年5月19日/home/eli/bin/trim2bRAD_2barcodes_noAdap.pl

ファイルの正確なパスを指定せずにディレクトリからスクリプトを実行しようとしたときの出力は次のとおりです。

(によると)eli@eli-XPS-13-7390-2-in-1:~$./trim2bRAD_2barcodes_noAdap.pl
bash: ./trim2bRAD_2barcodes_noAdap.pl: そのファイルやディレクトリはありません。

答え1

シェルが変数にリストされているディレクトリから実行可能ファイルを検索できるようにするには、$PATHコマンドラインで実行可能ファイルのパスを指定しないでください。

だからこれをしないでください。

./trim2bRAD_2barcodes_noAdap.pl

$PATHこれはシェルがまったく見つからないためです(./実行可能ファイルへの明示的なパスを提供しました)。

代わりに使用してください

trim2bRAD_2barcodes_noAdap.pl

/home/eli/binまた、の先頭に追加すると、次のように$PATH言うことができます。

PATH=$HOME/bin:$PATH

仮定が$HOME拡張されます。つまり、変数を非常に特定のディレクトリリストに設定したい場合、および/またはシステムが合理的なデフォルト値を提供したと信頼していない限り、すべてのディレクトリを一覧/home/eli表示する必要はありません。すでに環境変数なので、$PATHエクスポートする必要はありません。PATH

関連情報