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