私はほぼ常にルートなので、最近権限722でbash実行可能ファイルを作成しました。ファイルの内容は次のとおりです。
#!/home/nolan/Documents/test/listFiles
[ $# -lt 1 ] && dirFocus = "" || dirFocus = $1
dirSize=$(ls -a $dirFocus | wc -w)
for ((a = 1; a <= $dirSize; a++)) ; do
i = 1
for ITEM in $(ls -a $dirFocus); do
declare -i i
declare -i a
if [ $a -eq $i ]; then
echo "$a : $ITEM"
fi
i = $[ $i + 1 ]
done
done
端末で実行する場合は、次のようにします。
root @ /home/nolan/Documents/test: bash listFiles
1 : .
2 : ..
3 : apple
4 : dirCheck
5 : ifTest
6 : ifTest.txt
7 : listFiles
8 : myscript
9 : nolan.txt
10 : pointer_to_apple
11 : scriptx.sh
12 : Stuff
13 : weekend
14 : weekend2
15 : weekend3
予想通り、このような結果が出ました。しかし、2番目は次のとおりです。
root @ /home/nolan/Documents/test: ./listFiles
bash: ./listFiles: /home/nolan/Documents/test/listFiles: bad interpreter: Too
many levels of symbolic links
私が得るエラーです。正確に何が間違っていますか?別のフォーラムをチェックしてみましたが、私の状況に合わないようです。
ベストアンサー1
スクリプトの最初の行は「shebang」行です。スクリプトを解釈するために、実行するプログラムをカーネル(プログラムローダー)に通知します。スクリプトはスクリプトを解釈するために独自の実行を試み、スクリプトは再びインタプリタを解釈するために自分自身を呼び出します。
run scriptを使用するとカーネルはbash filename
呼び出されませんが、bashは有効なスクリプトを実行するために使用されます。
置く
#! /bin/bash
最初の行に行くと、すべてがうまくいくでしょう。
ところで、システムを実験するための制限された権限を持つユーザーを作成してください。なぜならroot
修理できないのは何でも簡単に破壊できるからです。