Я могу запустить скомпилированный файл .go без chmod

0

Я учусь программировать на языке Go Google, у меня есть скрипт:

package main

import "fmt"

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

Поэтому я скомпилировал это с:

go build /home/user/HelloWorld.go

Я заметил, что могу запустить скомпилированный результат без выполнения:

chmod +x /home/user/HelloWorld

Почему это?

RandomEagle
источник
2
Потому что goкомпилятор делает + х для вас?
Стивен Раух

Ответы:

1

Помните, что команда build вызывает несколько частей цепочки инструментов go с неявной целью создания исполняемого файла . Вы можете попросить go выполнить только компиляцию, скажем, или ссылку, взяв каждый инструмент по очереди, и это будет только последний шаг в цепочке инструментов сборки, который фактически устанавливает исполняемый бит.

Это не совсем то, что нужно. Это то, что делают цепочки инструментов компилятора. Следует иметь в виду, что сценарий оболочки не является скомпилированным исполняемым файлом: поэтому вам нужно установить исполняемый бит так, чтобы, когда ядро ​​прочитало первую строку, оно знало, чтобы вызвать оболочку и передать ей тело сценария.

AlwaysLearning
источник