Sending Tcsh to packages/ports ...
freebsd-lists at gromit.dlib.vt.edu
Fri Mar 29 13:36:11 UTC 2019
> Date: Fri, 29 Mar 2019 03:56:38 +0100
> From: Polytropon <freebsd at edvax.de>
> To: Michael Sierchio <kudzu at tenebras.com>
> Cc: mayuresh at kathe.in, FreeBSD Questions
> <freebsd-questions at freebsd.org>
> Subject: Re: Sending Tcsh to packages/ports ...
> Message-ID: <20190329035638.db780898.freebsd at edvax.de>
> Content-Type: text/plain; charset=US-ASCII
> On Thu, 28 Mar 2019 19:03:24 -0700, Michael Sierchio wrote:
>> *kudzu at hearst:/bin 130>* ll -i | grep csh
>> 198147 -r-xr-xr-x 2 root wheel 427888 Jun 22 2018 csh*
>> 198147 -r-xr-xr-x 2 root wheel 427888 Jun 22 2018 tcsh*
> The csh / tcsh is not the only system component known by
> more than one name:
> % hardlinks.sh /bin
> 23621: csh tcsh <--- !
> 23627: ed red
> 23633: link ln
> 23638: pgrep pkill
> 23644: rm unlink
> 24944: [ test
> It's important to note that by querying $0 or argv, a
> program can change its behaviour depending on the way it
> has been invoked. So a call to "csh" could cause the program
> to do things differently than if it was called by "tcsh".
> Of course this also applies to _any_ programs, being part
> of the OS or being installed by ports.
Indeed, this is the mechanism by which the /rescue system works: lots of hard links to a statically-linked /rescue/rescue binary, which behaves differently depending upon with which program name it's being invoked. In the case of /rescue this saves a lot of space over having separate static binaries.
More information about the freebsd-questions