正しい権限でカスタムスクリプトを実行すると、権限が拒否されました。

正しい権限でカスタムスクリプトを実行すると、権限が拒否されました。

次の内容を含む "linkhandler"というスクリプトを/ bin /フォルダにダウンロードしました。ファイル権限を与えました。これはls -lahの出力です。

-rwxrwxrwx 1 root 861 Jul 8 13:12 linkhandler

コマンドラインからlinkhandlerを実行すると、次の結果が表示されます。

/usr/bin/linkhandler: 10: /usr/bin/linkhandler: : Permission denied

何が起こりますか? usrフォルダ内のファイルの権限も確認しました。

役に立つ場合は、スクリプトの内容は次のとおりです。

  1 #!/bin/sh
  2
  3 # Feed script a url or file location.
  4 # If an image, it will view in sxiv,
  5 # if a video or gif, it will view in mpv
  6 # if a music file or pdf, it will download,
  7 # otherwise it opens link in browser.
  8
  9 # If no url given. Opens browser. For using script as $BROWSER.
 10 [ -z "$1" ] && { "$BROWSER"; exit; }
 11
 12 case "$1" in
 13     *mkv|*webm|*mp4|*youtube.com/watch*|*youtube.com/playlist*|*youtu.be*|*hooktube.com*|*bitchute.com*)
 14         setsid mpv --input-ipc-server=/tmp/mpvsoc$(date +%s) -quiet "$1" >/dev/null 2>&1 & ;;
 15     *png|*jpg|*jpe|*jpeg|*gif)
 16         curl -sL "$1" > "/tmp/$(echo "$1" | sed "s/.*\///")" && feh -a "/tmp/$(echo "$1" | sed "s/.*\///")"  >/dev/null 2>&1 & ;;
 17     *mp3|*flac|*opus|*mp3?source*)
 18         setsid tsp curl -LO "$1" >/dev/null 2>&1 & ;;
 19     *)
 20         if [ -f "$1" ]; then "$TERMINAL" -e "$EDITOR $1"
 21         else setsid "$BROWSER" "$1" >/dev/null 2>&1 & fi ;;
 22 esac

ベストアンサー1

/usr/bin/linkhandler: 10: /usr/bin/linkhandler: : Permission denied

これはスクリプトを実行するシェルのエラーメッセージです。読み取りはやや厄介ですが、行10番号がある可能性があり、: :エラーメッセージの前に奇妙な二重コロンがあることに注意する価値がありますPermission denied。 2番目のコロンの前に別の文字列があるはずですが、その文字列が空のものと同じです。

あなたの行10

[ -z "$1" ] && { "$BROWSER"; exit; }

1つの潜在的な問題は空になる可能性がある$BROWSERことです。スクリプト名が再び表示される理由やNULL値が原因でエラーが発生する理由はまだ説明されていません。それではこれを複製しましょう。

$ cat foo.sh
#!/bin/dash
unset FOO
"$FOO" 
$ ./foo.sh
./foo.sh: 3: ./foo.sh: : Permission denied

Dash、Debian、およびUbuntuで/bin/sh空のメッセージでコマンドを実行するエラーメッセージは非常によく似ており、実際には何らかの理由でスクリプト名がエラーで繰り返されます。 (Bashではエラーメッセージが異なります。)

この観点から見ると、問題は$BROWSER「空」にあります。適切なパスを使用して[ -z "$BROWSER" ]デフォルト値を確認または提供できます。"${BROWSER-/usr/bin/sensible-browser}"

おすすめ記事