O'Reilly logo

Shell Scripting: Expert Recipes for Linux, Bash, and More by Steve Parker

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Libraries

The shell has no real concept of libraries in the way that Perl and C use libraries. In C, you can bring in the Math library by including its header file and linking against the library (simply called “m,” hence -lm in the following gcc call). Additional functions, including cos(), sin(), and tan(), are then available to the program.

download.eps
cat math.c
#include <stdio.h>
#include <math.h>
int main(int argc, char *argv[])
{
  int arg=atoi(argv[1]);
  printf("cos(%d)=%0.8f\n", arg, cos(arg));
  printf("sin(%d)=%0.8f\n", arg, sin(arg));
  printf("tan(%d)=%0.8f\n", arg, tan(arg));
  return 0;
}
$ gcc -lm -o math math.c./math 30
cos(30)=0.15425145
sin(30)=-0.98803162
tan(30)=-6.40533120
$ ./math 60
cos(60)=-0.95241298
sin(60)=-0.30481062
tan(60)=0.32004039
$ ./math 90
cos(90)=-0.44807362
sin(90)=0.89399666
tan(90)=-1.99520041
$

math.c

warning.ai

This sample C code does no sanity tests on its input and is only here to show how linking to a library works in the C language. Also, if its results look wrong, that is because it is working in radians and not degrees.

The shell has a few ways of defining standard settings — aliases, variables, and functions, which create an environment almost indistinguishable from a set of libraries. When your shell is invoked interactively, it reads ~/.profile ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required