Also ist vom System die Wortwahl so ausgewählt.
Die Meldung kommt von "man". "man -k" ist exakt das Gleiche wie "apropos". "man" geht aber davon aus, dass du diese Funktion primär via "apropos" benutzt und wenn du dann keinen Parameter angibst, kommt erwähntes "apropos what?". Die Meldung ist suboptimal, ja, aber so ist das Leben halt manchmal.
Ich hab mal wieder ne Frage zu ./
Will ein bashskript ausführen (#!/usr/bin/bash):
Wenn ich nun mit ./ ausführen mag, kommt "Defekter Interpreter: Datei oder Verzeichnis nicht gefunden".
Mit source kann ich es ausführen. Mein verdacht war zwar, das es an den rechten liegen möge, aber selbst wenn ich allen alle Rechte gebe, erhalte ich weiterhin den Fehler. Es sollte doch möglich sein, ohne im Skript was zu ändern, es trotzdem mit ./datei.sh ausführen zu können (?).
Das erste Wort in der Shell ist IMMER das Programm, das du ausführen möchtest. Ausführbare Programme liegen dabei in den Verzeichnissen, die in $PATH angegeben sind. Willst du mal ein Programm ausführen, welches nicht in einem Verzeichnis in $PATH liegt, musst du der Shell dies mitteilen, indem du nicht nur den Namen des Programms angibst, sondern auch wo die Shell es finden kann. Hast du also ein Programm namens "foobar" in deinem Homeverzeichnis, musst du den Pfad zu dem Programm angeben, also "/home/thisor/foobar". Dieser Weg benötigt Ausführrechte auf der Datei. Wenn du sowieso schon in deinem Homeverzeichnis bist, dann ist es unnötig den ganzen Pfad anzugeben. Es reicht sich mit dem Punkt (".") auf das aktuelle Verzeichnis zu referenzieren. Heraus kommt also "./foobar". Linux weiß aber nicht wie es das Programm auszuführen hat. Das muss es erst herausfinden. Dabei prüft es unter Anderem, ob in der aller ersten Zeile der Datei "#!", also eine Shebang, vorkommt. Tut es das, wird der Part hinter dem "#!" als der Interpreter benutzt. Ein "#!/usr/bin/bash" weißt dem Kernel also an, dass diese Datei mit dem Interpreter "/usr/bin/bash" auszuführen ist. Die Datei existiert aber bei dir nicht. Vermutlich liegt die Bash bei dir in "/bin/bash". Und deswegen kommt die von dir beschriebene Meldung. Wenn du die Datei per "source" einliest, dann wird die Shebang nicht beachtet. Mit "source" führst du nicht aus, sondern du liest ein, im Grunde wie ein "include" in den meisten Programmiersprachen. Deswegen braucht ein "source" auch keine Ausführrrechte, funktioniert aber deshalb auch nur mit Bash-Scripten, wenn du die Bash benutzt, bzw. mit Zsh-Scripten, wenn du die Zsh benutzt und so weiter. Du kannst dir nicht sicher sein, dass die Bash immer in "/usr/bin/bash" liegt, daher ist eine solche Shebang auch nicht portabel. Um unter Anderem diesem Problem aus dem Weg zu gehen gibt es aber das Programm "env", welches dir den absoluten Pfad zu einem bestimmten Programm geben kann, solange es in $PATH ist. Ersetz deine Shebang also durch "#!/usr/bin/env bash", dann funktioniert das auch portabel. Du kannst dir zu 99,99% sicher sein, dass "env" in "/usr/bin" liegt. Darauf haben sich praktisch alle relevanten Distributionen geeinigt.