i92guboj |
09-16-2010 03:09 AM |
Quote:
Originally Posted by slakmagik
(Post 4097866)
Well, the only thing I can think of is that gcc isn't installed. If not that, sorry, and hopefully someone else can help.
|
I don't know if it's the issue at hand, but some binaries and scripts will behave differently depending no the name you use to call them, a typical example is busybox. A simple example so you get what I mean.
Code:
$ which busybox
/bin/busybox
$ busybox
BusyBox v1.17.1 (2010-08-17 09:57:50 CEST) multi-call binary.
Copyright (C) 1998-2009 Erik Andersen, Rob Landley, Denys Vlasenko
and others. Licensed under GPLv2.
See source distribution for full notice.
Usage: busybox [function] [arguments]...
or: function [arguments]...
BusyBox is a multi-call binary that combines many common Unix
utilities into a single executable. Most people will create a
link to busybox for each function they wish to use and BusyBox
will act like whatever it was invoked as.
Currently defined functions:
[, [[, acpid, addgroup, adduser, adjtimex, ar, arp, arping, ash, awk, basename, bb, bbconfig, bbsh, beep, blkid, bootchartd, brctl, bunzip2, bzcat, bzip2, cal, cat, catv, chat, chattr, chgrp, chmod, chown,
chpasswd, chpst, chroot, chrt, chvt, cksum, clear, cmp, comm, conspy, cp, cpio, crond, cryptpw, cttyhack, cut, date, dd, deallocvt, delgroup, deluser, depmod, devmem, df, dhcprelay, diff, dirname, dmesg,
dnsdomainname, dos2unix, dpkg-deb, du, dumpkmap, dumpleases, echo, ed, egrep, eject, env, envdir, envuidgid, ether-wake, expand, expr, false, fbset, fdflush, fdformat, fdisk, fgconsole, fgrep, find, findfs,
flash_eraseall, flash_lock, flash_unlock, flashcp, flock, free, freeramdisk, fsck, fsck.minix, fsync, ftpd, fuser, getopt, getty, grep, gunzip, gzip, halt, hd, hdparm, head, hexdump, hostname, httpd, hwclock, id,
ifconfig, ifdown, ifenslave, ifplugd, ifup, init, insmod, install, ionice, ip, ipaddr, ipcrm, ipcs, iplink, iproute, iprule, iptunnel, kbd_mode, kill, killall, killall5, klogd, last, length, less, linux32,
linux64, linuxrc, ln, loadfont, loadkmap, logger, login, logread, losetup, lpq, lpr, ls, lsattr, lsmod, lspci, lsusb, lzcat, lzma, lzop, lzopcat, makedevs, makemime, man, md5sum, mdev, mesg, microcom, mkdir,
mkdosfs, mke2fs, mkfifo, mkfs.ext2, mkfs.minix, mkfs.reiser, mkfs.vfat, mknod, mkpasswd, mkswap, mktemp, modinfo, modprobe, more, mount, mountpoint, mt, mv, nameif, nc, netstat, nice, nmeter, nohup, nslookup,
ntpd, openvt, passwd, patch, pgrep, pidof, ping, ping6, pipe_progress, pivot_root, pkill, popmaildir, poweroff, printenv, printf, ps, pscan, pwd, raidautorun, rdate, rdev, readahead, readlink, readprofile,
realpath, reboot, reformime, renice, reset, resize, rev, rm, rmdir, rmmod, route, rtcwake, run-parts, runlevel, runsv, runsvdir, rx, script, scriptreplay, sed, sendmail, seq, setarch, setconsole, setfont,
setkeycodes, setlogcons, setsid, setuidgid, sh, sha1sum, sha256sum, sha512sum, showkey, sleep, smemcap, softlimit, sort, split, start-stop-daemon, stat, strings, stty, su, sum, sv, svlogd, swapoff, swapon,
switch_root, sync, sysctl, syslogd, tac, tail, tar, tee, telnet, telnetd, test, tftp, tftpd, time, timeout, top, touch, tr, traceroute, traceroute6, true, tty, ttysize, tunctl, tune2fs, ubiattach, ubidetach,
udhcpc, udhcpd, umount, uname, uncompress, unexpand, uniq, unix2dos, unlzma, unlzop, unxz, unzip, uptime, usleep, vconfig, vi, vlock, volname, wall, watch, watchdog, wc, wget, which, who, whoami, xargs, xz,
xzcat, yes, zcat, zcip
$ ln -s /bin/busybox ls
$ ls -l ls
lrwxrwxrwx 1 i92guboj i92guboj 12 sep 16 10:07 ls -> /bin/busybox
$ ./ls
COPYING README ccache.1 ccache.h cleanup.c configure execute.c install-sh mdfour.c packaging stats.c unify.c web
Makefile.in args.c ccache.c ccache.yo config.h.in configure.in hash.c ls mdfour.h snprintf.c test.sh util.c
$
In shell scripts this can be done by checking for the value of $0, or usually $(basename $0), which will hold the name of the command you used to invoke the script. The script can check for that value and act differently depending on such value.
|