dirname ungültige Option `b`

8

Warum erhalte ich diesen Fehler? Ich versuche, diese set.conf zu beschaffen

user@connect:~/testenv$ source $(cd $(dirname $0) && pwd)"/set.conf"
dirname: invalid option -- 'b'
Try 'dirname --help' for more information.
-bash: /home/tempuser/set.conf: No such file or directory

Ich habe versucht, - $ 0 an der Eingabeaufforderung hinzuzufügen, es funktioniert aber gut. Wie kann ich das im Skript ausführen?

Mischling
quelle
Möchten Sie uns mitteilen, was 0 US-Dollar sind?
Ikarus
$ 0 ist der Dateiname des aktuellen Skripts. (src: tutorialspoint.com/unix/unix-special-variables.htm )
Dirk Schumacher

Antworten:

14

$0 In einem Skript befindet sich der Name des Skripts.

Bei der Eingabeaufforderung ist dies der Name der Shell, was wahrscheinlich -bashin Ihrem Fall der Fall ist.

dirnamebehandelt den führenden Bindestrich als Einführung einer Befehlszeilenoption -b, die nicht unterstützt wird.

  1. Der von Ihnen verwendete Code funktioniert an der Eingabeaufforderung nicht. Sie können es in eine Datei einfügen und stattdessen die Datei ausführen.
  2. Versuchen Sie es dirname -- $0stattdessen: Mit den meisten Befehlen können Sie schreiben --, damit alles, was folgt, als Parameter anstelle von Optionen behandelt wird. In diesem Fall wird das Problem nicht behoben, es sollte jedoch klarer werden, um welches Problem es sich handelt.
Mikel
quelle
Es wurde ausgeführt, aber wie Sie sagten, funktioniert es in der Bash-Eingabeaufforderung, aber es wird nicht in der eigentlichen Skriptdatei ausgeführt.
Mischling
Wie kann ich es auf dem Skript ausführen ....
Mongrel