home *** CD-ROM | disk | FTP | other *** search
- Submitted-by: mengel@fnal.fnal.gov (Marc W. Mengel)
-
- brnstnd@KRAMDEN.ACF.NYU.EDU (Dan Bernstein) writes:
-
- >Submitted-by: brnstnd@KRAMDEN.ACF.NYU.EDU (Dan Bernstein)
-
- >Under BSD, you can easily set up a /inst/bin directory with symlinks to
- >every officially ``installed'' executable. Users can then have /inst/bin
- >in their paths instead of all the physical directories like /bin, /etc,
- >/usr/bin, /usr/ucb, etc. Although the directory is large, the time for
- >several failing execve()s is much larger than the time for searching one
- >directory (especially with path caching as in BSD 4.3).
-
- Of course, you can't run /bin/ls there without it blowing
- up, and the directory search time is much more expensive
- than split directories. Also none of your modern shells
- (SysV sh, csh, ksh, bash, etc.) do mulitple execve()s,
- they keep a hash table. Most current UNIX implementations
- do not handle large (>200 files) directories well at all.
- Many standard unix utilities choke on huge directories.
-
- Due to the filesystem implementation, things like stat-ing
- all the files in a directory turn out to be order(n**2),
- making lots of operations slower in non-obvious ways.
-
- >Even on System V, you can put hard links in /inst/bin, and when an
- >executable is on a different device you can set up a shell script which
- >execs the real executable. It's *still* more efficient, on the average,
- >than all the failing execve()s. Try it if you don't believe me.
-
- Well, actually in general you have to write a little
- stub executable, since you can't exec() shell scripts
- on Sys. V systems previous to Release 4...
- -------
- Marc Mengel
- mengel@fnal.fnal.gov
-
-
- Volume-Number: Volume 24, Number 50
-
-