LinuxQuestions.org
Visit Jeremy's Blog.
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, 05: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, 05:30 AM   #2
druuna
LQ Veteran
 
Registered: Sep 2003
Posts: 10,532
Blog Entries: 7

Rep: Reputation: 2387Reputation: 2387Reputation: 2387Reputation: 2387Reputation: 2387Reputation: 2387Reputation: 2387Reputation: 2387Reputation: 2387Reputation: 2387Reputation: 2387
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, 06:37 AM   #3
colucix
LQ Guru
 
Registered: Sep 2003
Location: Bologna
Distribution: CentOS 6.5 OpenSuSE 12.3
Posts: 10,509

Rep: Reputation: 1976Reputation: 1976Reputation: 1976Reputation: 1976Reputation: 1976Reputation: 1976Reputation: 1976Reputation: 1976Reputation: 1976Reputation: 1976Reputation: 1976
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, 06: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, 06: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 06:46 AM. Reason: re-writeing it clearly
 
Old 11-12-2007, 06:51 AM   #6
colucix
LQ Guru
 
Registered: Sep 2003
Location: Bologna
Distribution: CentOS 6.5 OpenSuSE 12.3
Posts: 10,509

Rep: Reputation: 1976Reputation: 1976Reputation: 1976Reputation: 1976Reputation: 1976Reputation: 1976Reputation: 1976Reputation: 1976Reputation: 1976Reputation: 1976Reputation: 1976
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, 07:08 AM   #7
druuna
LQ Veteran
 
Registered: Sep 2003
Posts: 10,532
Blog Entries: 7

Rep: Reputation: 2387Reputation: 2387Reputation: 2387Reputation: 2387Reputation: 2387Reputation: 2387Reputation: 2387Reputation: 2387Reputation: 2387Reputation: 2387Reputation: 2387
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, 09:18 AM   #8
onebuck
Moderator
 
Registered: Jan 2005
Location: Midwest USA, Central Illinois
Distribution: SlackwareŽ
Posts: 12,541
Blog Entries: 23

Rep: Reputation: 1943Reputation: 1943Reputation: 1943Reputation: 1943Reputation: 1943Reputation: 1943Reputation: 1943Reputation: 1943Reputation: 1943Reputation: 1943Reputation: 1943
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 09:54 AM
Confused by command "find" chen666 Linux - Newbie 4 11-11-2006 06:43 PM
Confused about mount command JacekZ Linux - Newbie 4 09-08-2006 04:10 AM
bash: <command name> command not found smash Programming 5 03-13-2006 09:48 AM
BASH scripting: confused about redirection & file descriptors funkymunky Programming 1 06-07-2004 08:47 AM


All times are GMT -5. The time now is 12:47 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
Facebook: linuxquestions Google+: linuxquestions
Open Source Consulting | Domain Registration