web-dev-qa-db-ja.com

起動時にxrandr -o normalを実行し、Bad Interpretationエラーが発生し続ける必要があります

実行する必要があるすべてxrandr -o normal起動時に取得し続ける

Bad Interpretation error - No such file or directory exists. 

これは私が持っているスクリプトです:

#!bin/bash
xrandr -o normal

私は場所とその間違いなくそこをチェックしました。

2
Sam

bin/bashは、先頭に/がないため、 相対パス になります。 現在の場所bashサブディレクトリにあるbinを参照します。通常、この場合のように、これは単に存在しません。存在する場合は、正しいファイルではない可能性があります。

絶対パスを意図しているようです。 steeldriver commented のように、パスの先頭に/を書き込むと、この問題が解決され、パスのbinコンポーネントが常にbinを参照するようになります/に直接存在するディレクトリ。

#!/bin/bash

Shebang/hashbang(#!)line で相対パスを使用しないでください。この場合、あなたはそれを試みなかったようですが、偶然そうしただけです。

シェルでコマンドを実行するときと同じようにPATHルックアップが発生することを期待して、#!python3のようなものを書いて、これを試みる人もいます。発生しません。 (envコマンドはPATHを検索するため、#!/usr/bin/env python3はそれらの場合に使用できます。)

nlikeターゲットが相対パスであるシンボリックリンクを使用します。ターゲットはシンボリックリンクが存在する場所に対して相対的に解決されます #!行の相対パスはスクリプトの実行時に現在の作業ディレクトリになるものは何でも 。これは、相対パスに/(例:bin/bash)で区切られた複数のパスコンポーネントが含まれている場合にも当てはまります。その場所は、通常、スクリプトが実行されるたびに同じになることはなく、スクリプトを含むディレクトリではないこともよくあります。

したがって、相対パスを使用したシンボリックリンクは有用ですが、相対パスを使用したシバンは実際には常に間違いです。

3
Eliah Kagan