Re: dumb question

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxxxxxxxxxxxxx
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


[Index of Archives]     [Older Fedora Users]     [Fedora Announce]     [Fedora Package Announce]     [EPEL Announce]     [EPEL Devel]     [Fedora Magazine]     [Fedora Summer Coding]     [Fedora Laptop]     [Fedora Cloud]     [Fedora Advisory Board]     [Fedora Education]     [Fedora Security]     [Fedora Scitech]     [Fedora Robotics]     [Fedora Infrastructure]     [Fedora Websites]     [Anaconda Devel]     [Fedora Devel Java]     [Fedora Desktop]     [Fedora Fonts]     [Fedora Marketing]     [Fedora Management Tools]     [Fedora Mentors]     [Fedora Package Review]     [Fedora R Devel]     [Fedora PHP Devel]     [Kickstart]     [Fedora Music]     [Fedora Packaging]     [Fedora SELinux]     [Fedora Legal]     [Fedora Kernel]     [Fedora OCaml]     [Coolkey]     [Virtualization Tools]     [ET Management Tools]     [Yum Users]     [Yosemite News]     [Gnome Users]     [KDE Users]     [Fedora Art]     [Fedora Docs]     [Fedora Sparc]     [Libvirt Users]     [Fedora ARM]

  Powered by Linux