others-How to solve insufficient permissions error when executing a script in linux

1. Purpose

In this post, I would demo how to solve the following error when executing a script in linux/unix/macos systems:

[root@kube-117 xxx]# ./h1.lua
-bash: ./h1.lua: Insufficient permissions



2. The solution

You should check the first line(shebang line) inside the script, for me, this is the first line:

[root@kube-117 xxx]# cat h1.lua
#!/usr/local/bin/lua

local i=0
while 1 do
  i = i+1
  if i>10000000 then
    print(i)
    break
  end
end

But when I type which lua to determine the lua engine, I got this:

[root@kube-117 xxx]# which lua
/usr/bin/lua

So the solution is to change the first line of the script from:

#!/usr/local/bin/lua

to :

#!/usr/bin/lua


One more thing about the shebang line :

The shebang is a special character sequence in a script file that specifies which program should be called to run the script. … Many scripting languages, such as Perl, use the # character to indicate the beginning of a comment line that should be ignored by the interpreter.

The name shebang for the distinctive two characters comes from an inexact contraction of SHArp bang or haSH bang, referring to the two typical Unix names for them. Another theory on the sh in shebang is that it is from the default shell sh, usually invoked with shebang.


3. Summary

In this post, I demonstrated how to solve the Insufficient permissions problem when executing a bash script in linux system, the key point is to check the first line of the script and make sure the path is correct. That’s it, thanks for your reading.