web-dev-qa-db-ja.com

Bashスクリプト:lsコマンドが見つかりません

Arch USB iso、zshの下で、スクリプトを実行します./test含む:

#!/bin/bash
PATH=$(dirname $0)
ls $PATH

戻り値

ls:コマンドが見つかりません

これを修正する方法はありますか?

編集:lsだけは機能しますが、$ PATHを追加しているときは機能しません

編集:コメントから、$ PATHは環境変数であり、その値を置き換えていたことがわかりました...

2
ChiseledAbs

変数PATHは特別なものです。特別な変数がたくさんあります(そしてすべてが資本であるため、簡単に回避できます)。 PATHは、コマンドを検索するためのディレクトリのリストを保持します。

楽しみながら学習するには(これらは同じものですが)、スクリプトの外にecho $PATHと入力して、その内容を確認します。

問題を修正するには、PATHを壊さないでください。別の変数名を使用してください(すべての大文字ではありません)。

3
ctrl-alt-delor

/bin/lsを試してください。@ 123がコメントで言及しているように、lsがパスにないようです。

PATH/binを追加します。 ~/.bashrcを追加します

export $PATH=$PATH:/bin
1
COMP

試してみてください:

_#!/bin/bash
PATH="$PATH:$(dirname $0)"
ls $PATH
_

このようにして、$(dirname $0)を置き換える代わりにPATH変数に追加します。または、環境変数を編集せずに$(dirname $0)を個別に使用する場合は、別の変数名を使用します。

0
Andrew