LinuxQuestions.org
Welcome to the most active Linux Forum on the web.
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - Newbie
User Name
Password
Linux - Newbie This Linux forum is for members that are new to Linux.
Just starting out and have a question? If it is not in the man pages or the how-to's this is the place!

Notices


Reply
  Search this Thread
Old 11-12-2007, 04:22 AM   #1
Couling
Member
 
Registered: Oct 2007
Posts: 30

Rep: Reputation: 15
Confused over a BASH command


I've done a fair amount of C and java programming on platforms other than linux, so I thought I'd have no trouble with variables in BASH.

However I've been confused by seeing this command:
Code:
CC="gcc -B/usr/bin/" ../binutils-2.17/configure \
--prefix=/tools --disable-nls --disable-werror
To my untrained eye this should just assign a string to the variable CC. What it actually does is configure binutils.

Is anyone able to give me a little detail on why this carries out a command? Anything about what this is actually doing would be helpful.

Thanks for your time.
 
Old 11-12-2007, 04:30 AM   #2
druuna
LQ Veteran
 
Registered: Sep 2003
Posts: 10,532
Blog Entries: 7

Rep: Reputation: 2403Reputation: 2403Reputation: 2403Reputation: 2403Reputation: 2403Reputation: 2403Reputation: 2403Reputation: 2403Reputation: 2403Reputation: 2403Reputation: 2403
Hi,

There are 2 commands present:

1) CC="gcc -B/usr/bin/", This forces gcc to prefer the linker from the host in /usr/bin. This is necessary on some hosts where the new ld built here is not compatible with the host's gcc. (boldly copied from the LFS 6.3, 5.3. Binutils-2.17 - Pass 1 page....).

and

2) ../binutils-2.17/configure --prefix=/tools --disable-nls --disable-werror, which is the configure command (with 3 options).

Hope this helps.
 
Old 11-12-2007, 05:37 AM   #3
colucix
LQ Guru
 
Registered: Sep 2003
Location: Bologna
Distribution: CentOS 6.5 OpenSuSE 12.3
Posts: 10,509

Rep: Reputation: 1983Reputation: 1983Reputation: 1983Reputation: 1983Reputation: 1983Reputation: 1983Reputation: 1983Reputation: 1983Reputation: 1983Reputation: 1983Reputation: 1983
Quote:
Originally Posted by Couling View Post
Code:
CC="gcc -B/usr/bin/" ../binutils-2.17/configure \
--prefix=/tools --disable-nls --disable-werror
To my untrained eye this should just assign a string to the variable CC. What it actually does is configure binutils.
Here the syntax is the same as the env command
Code:
env CC="gcc -B/usr/bin/" ../binutils-2.17/configure \
--prefix=/tools --disable-nls --disable-werror
you can omit env and the result is the same: change or create an enviromental variable which will be assigned for the duration of the script or command. See man env for details.
 
Old 11-12-2007, 05:39 AM   #4
Couling
Member
 
Registered: Oct 2007
Posts: 30

Original Poster
Rep: Reputation: 15
That makes a little more sense.

How does the syntax indicate 2 commands?
Is it the fact that "gcc -B/usr/bin/" is quoted or something else?
 
Old 11-12-2007, 05:44 AM   #5
Couling
Member
 
Registered: Oct 2007
Posts: 30

Original Poster
Rep: Reputation: 15
Quote:
Originally Posted by colucix View Post
Here the syntax is the same as the env command
Ah.

The equivalent would have been to use "export CC=...", followed by the configure command?

although this would have perminantly changed CC (atleast until I closed the command prompt)

Last edited by Couling; 11-12-2007 at 05:46 AM. Reason: re-writeing it clearly
 
Old 11-12-2007, 05:51 AM   #6
colucix
LQ Guru
 
Registered: Sep 2003
Location: Bologna
Distribution: CentOS 6.5 OpenSuSE 12.3
Posts: 10,509

Rep: Reputation: 1983Reputation: 1983Reputation: 1983Reputation: 1983Reputation: 1983Reputation: 1983Reputation: 1983Reputation: 1983Reputation: 1983Reputation: 1983Reputation: 1983
Quote:
Originally Posted by Couling View Post
The equivalent would have been to use "export CC=...", followed by the configure command?
No. Not export, but env. You are right, if using export you permanently set an environment variable until you close the shell or issue an unset command. Instead, using env or the syntax
Code:
NAME=VALUE [ COMMAND [ARG] ... ]
you can set the value of NAME just for the execution of the command.
 
Old 11-12-2007, 06:08 AM   #7
druuna
LQ Veteran
 
Registered: Sep 2003
Posts: 10,532
Blog Entries: 7

Rep: Reputation: 2403Reputation: 2403Reputation: 2403Reputation: 2403Reputation: 2403Reputation: 2403Reputation: 2403Reputation: 2403Reputation: 2403Reputation: 2403Reputation: 2403
Hi,

You've been answering your own questions

Just to confirm: you can set the value of NAME just for the execution of the command. is correct.

I'm not sure if you are trying to set up LFS, but take a look at the chapter that follows binutils (GCC-4.1.2 - Pass 1), it shows that CC='.....' is set again.
 
Old 11-12-2007, 08:18 AM   #8
onebuck
Moderator
 
Registered: Jan 2005
Location: Central Florida 20 minutes from Disney World
Distribution: SlackwareŽ
Posts: 13,878
Blog Entries: 42

Rep: Reputation: 3116Reputation: 3116Reputation: 3116Reputation: 3116Reputation: 3116Reputation: 3116Reputation: 3116Reputation: 3116Reputation: 3116Reputation: 3116Reputation: 3116
Quote:
Originally Posted by Couling View Post
I've done a fair amount of C and java programming on platforms other than linux, so I thought I'd have no trouble with variables in BASH.

However I've been confused by seeing this command:
Code:
CC="gcc -B/usr/bin/" ../binutils-2.17/configure \
--prefix=/tools --disable-nls --disable-werror
To my untrained eye this should just assign a string to the variable CC. What it actually does is configure binutils.

Is anyone able to give me a little detail on why this carries out a command? Anything about what this is actually doing would be helpful.

Thanks for your time.
Hi,

Several posts have given you some good advice. I would suggest that you look at the Advanced Bash-Scripting Guide or Learning the Shell. You could also look at the Tutorials section of 'Slackware-Links' for other useful links.
 
  


Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
Bash command help tmrhymer Programming 10 04-28-2007 08:54 AM
Confused by command "find" chen666 Linux - Newbie 4 11-11-2006 05:43 PM
Confused about mount command JacekZ Linux - Newbie 4 09-08-2006 03:10 AM
bash: <command name> command not found smash Programming 5 03-13-2006 08:48 AM
BASH scripting: confused about redirection & file descriptors funkymunky Programming 1 06-07-2004 07:47 AM

LinuxQuestions.org > Forums > Linux Forums > Linux - Newbie

All times are GMT -5. The time now is 06:27 AM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration