Ich kann kompilierte .go-Dateien ohne chmod ausführen

322
RandomEagle

Ich lerne, in Googles Go-Sprache zu programmieren, ich habe ein Skript:

package main  import "fmt"  func main() { fmt.Println("Hello, World!") } 

Also habe ich es zusammengestellt mit:

go build /home/user/HelloWorld.go 

Ich habe festgestellt, dass ich das kompilierte Ergebnis ausführen kann, ohne Folgendes auszuführen:

chmod +x /home/user/HelloWorld 

Warum ist das?

0
Weil der "go" -Compiler das + x für Sie tut? Stephen Rauch vor 7 Jahren 2

1 Antwort auf die Frage

1
AlwaysLearning

Beachten Sie, dass der Befehl build mehrere Teile der go-Toolkette mit dem impliziten Ziel auffordert, eine ausführbare Datei zu erstellen . Sie könnten fragen, ob Sie nur kompilieren, sagen oder verknüpfen möchten, indem Sie die einzelnen Werkzeuge abwechselnd verwenden, und es wäre nur der letzte Schritt in der Build-Toolchain, der das ausführbare Bit tatsächlich setzt.

Dies ist nicht speziell eine Go-Sache. Dies ist, was Compiler-Toolketten tun. Beachten Sie, dass ein Shell-Skript keine kompilierte ausführbare Datei ist. Deshalb müssen Sie das ausführbare Bit so einstellen, dass der Kernel beim Lesen der ersten Zeile weiß, dass er die Shell aufruft und den Skriptkörper an ihn weitergibt.