help-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Avoiding a shebang to call awk


From: Dennis Williamson
Subject: Re: Avoiding a shebang to call awk
Date: Wed, 22 Feb 2023 11:47:45 -0600

On Wed, Feb 22, 2023, 11:19 AM goncholden <goncholden@protonmail.com> wrote:

>
> ------- Original Message -------
> On Wednesday, February 22nd, 2023 at 12:20 AM, Greg Wooledge <
> greg@wooledge.org> wrote:
>
>
> > On Tue, Feb 21, 2023 at 07:24:23AM +0000, goncholden wrote:
> >
> > > I have make an awk file named "tool.awk". But I want to use its name
> > > "tool" rather than having to call awk directly.
> > >
> > > Originally I had a shebang, namely "#!/bin/awk -f" in the file
> "tool.awk".
> >
> >
> > This is the preferred approach. Simply rename the file from "tool.awk"
> > to "tool", make sure the directory in which it lives is in your PATH,
> > chmod +x if you haven't already, and you're all set.
> >
> > > I have removed the awk shebang from the file and added a bash function
> > >
> > > tool ()
> > > {
> > > local epath="${HOME}/Opstk/bin//opcon"
> > > awk -f "${epath}"/tool.awk "${@:--}"
> > > }
> >
> >
> > This seems like a bad idea to me. Now, any time you want to do
> > maintenance work on your tool, you have to look in two places. Also,
> > your tool can't be used by anybody but you, and then only if you start
> > with an interactive shell. You can't run it from a cron job, for example,
> > or do something like "find . -type f -exec tool {} +".
> >
> > If you really want "tool.awk" to retain that horrible name,
>
> Do people customarily not care that the tool is an awk script ?
> I know that for bash, extensions are not used; but was not aware
> that awk scripts are treated the same way.
>
> > and to live
> > in a directory which is not in PATH, then the third choice is to leave
> > it where it is, named what it is, but create a symbolic link from a
> > directory that's in PATH. For example,
> >
> > mkdir -p ~/bin; ln -s ~/Opstk/bin/opcon/tool.awk ~/bin/tool
> >
> > Ensure $HOME/bin is in your PATH, and you should be good to go.
>


Whether parts of a filename have any significance is generally a function
of the operating system. In Unix and Linux there is no significance
whatsoever. Some people like to indicate the language of a script in the
name. But it is only for human reference. It is often advised to not do
that though because if you change the language then the name doesn't match
and changing it could affect other scripts that call it and may require
changes in documentation and training.

>


reply via email to

[Prev in Thread] Current Thread [Next in Thread]