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

229
RandomEagle

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

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

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

go build /home/user/HelloWorld.go 

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

chmod +x /home/user/HelloWorld 

Почему это?

0
Потому что компилятор `go` делает + x для вас? Stephen Rauch 7 лет назад 2

1 ответ на вопрос

1
AlwaysLearning

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

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

Похожие вопросы