On 01/04/2012 02:19 AM, Paul Allen Newell wrote:
To the list:

I am dealing with a primary Fedora machine and a alternate WinXP under
cygwin. Cygwin always screw up the permissions when I drag stuff over to
it and then bring it back to the Fedora box. I've got scripts to handle
making things right again.

But I did have a question which I didn't find out from Googling (as I
suspect I didn't know how to phrase it). On a Fedora/Linux box, do
Makefile/makefile (s) have to be set to +x? Or can they be just
"rw-r--r--"?

Thanks in advance,
Paul

Hey Paul,

If you want a file to be executable it must be +x. If the file is read as input to another program it needs not be +x.

Example 1:

You have a +x shell script file named "Hello" that contains the following lines.

[user@machine]$ cat Hello
#! /bin/bash
#
echo "Hello World"
[user@machine]$

To execute this file do this:

[user@machine]$ ./Hello
Hello World
[user@machine]$

This works because the first line tells the shell what program to use to interpret the contents of the file. In this case the shell launches /bin/bash and passes the rest of the file as input to the /bin/bash process. /bin/bash makes sense of the lines and produces the output.

Example 2:

If your -x file named "Hello" lacked the first line:

[user@machine]$ cat Hello
#
echo "Hello World"
[user@machine]$

To make /bin/bash do its thing you would have to do this:

[user@machine]$ /bin/bash Hello
Hello World
[user@machine]$

The shell would launch /bin/bash and then /bin/bash would read and execute the lines inside the file. The Hello file its self would not be executed. /bin/bash would be executed and the Hello file would be read as input to the /bin/bash program.

Now, to be specific to your question, the same principle applies. Your -x Makefile/makefile is not an executable file. It contains a list of instructions the /usr/bin/make executable interprets. The executable is /usr/bin/make. To make /usr/bin/make do its thing do this:

[user@machine]$ /usr/bin/make
Make output appears here
[user@machine]$

You do not have to supply the name of the makefile, as long its name is makefile, because /usr/bin/make defaults to that file name. If you changed the name of makefile to mybuildfile then you would have to do this:

[user@machine]$ /usr/bin/make mybuildfile
Make output appears here
[user@machine]$

The makefile is not being executed but /usr/bin/make is executed and it is using the contents of the makefile as input to guide its processing.


--
   °v°
  /(_)\
   ^ ^  Mark LaPierre
Registerd Linux user No #267004
www.counter.li.org
--
users mailing list
users@lists.fedoraproject.org
To unsubscribe or change subscription options:
https://admin.fedoraproject.org/mailman/listinfo/users
Guidelines: http://fedoraproject.org/wiki/Mailing_list_guidelines
Have a question? Ask away: http://ask.fedoraproject.org

Reply via email to