I don't think mandating that binaries be placed in /usr/bin is a de facto standard; and I have never heard of anybody's doing it. I have, once again, heard of systems which specifically avoid touching /usr/bin. Here is another example: the brew package manager on macos installs everything into /opt/homebrew, to avoid touching any part of the system as a whole (since it is a third-party package manager). Users are expected to update their path _once_ to include /opt/homebrew/bin, and can then pick up anything they install through brew without additional effort.

On Sat, 11 Mar 2023, Raul Miller wrote:

In my opinion, a symbolic link at /usr/bin/ijconsole would be no more
of an imposition than #!/usr/bin/env jconsole (and in many cases it
would be less of an imposition).

(0) Sadly, neither approach works for the windows cmd environment
(though either approach would work under cygwin or wsl).

(1) Neither approach cares much about where J is installed.

(2) Both approaches correspond to "defacto standards" (the "nice"
thing about standards is that there are so many to choose from).

(3) The /usr/bin/env approach requires a PATH update in typical cases,
while the symbolic link approach does not.

(4) We already have an installed base with /usr/bin/ijconsole

(5) #!/usr/bin/env jconsole won't work for installs where the
executable is named ijconsole

That said, for now, it's just a small paragraph of documentation -- a
recommendation for some people to use at install time.

Thanks,

--
Raul

On Sat, Mar 11, 2023 at 2:41 AM Elijah Stone <elro...@elronnd.net> wrote:

I don't think anyone has proposed a tool like virtualenv, so I don't see how
that's relevant.  And I don't see why we should make impositions on the way
anyone chooses to package j.

On Fri, 10 Mar 2023, Raul Miller wrote:

> Yes, PATH is the only environmental variable that influences how
> /usr/bin/env finds the executable.
>
> But I was talking about tools like
> https://pypi.org/project/virtualenv/ where there's other things going
> on.
>
> That said, you are correct that there are some systems which install
> optional software to /usr/local/bin/, and I had forgotten about those.
> That said... I don't think there's any significant permissions
> problems involved in installing in /usr/bin on bsd systems. As I
> understand it, that's /usr/bin/env bash is a historical issue (and,
> thus, a backwards compatibility issue).
>
> Thanks,
>
> --
> Raul
>
> On Fri, Mar 10, 2023 at 8:20 PM Elijah Stone <elro...@elronnd.net> wrote:
>>
>> > /usr/bin/env is the standard for developer systems where different
>> > configurations are managed through environmental variables. However, it's
>> > rather fragile for non-developers, as it requires properly conditioned
>> > environmental variables.
>>
>> This statement confuses me greatly.  Can you elaborate?  I think the only
>> environment variable which is relevant is PATH, and PATH will certainly
>> contain /usr/bin.  So if PATH contains /usr/bin, and there is a
>> /usr/bin/ijconsole, then #!/usr/bin/env ijconsole will do the right thing.  
If
>> ijconsole is somewhere other than /usr/bin, and it is in PATH, then
>> #!/usr/bin/env ijconsole will pick it up, but #!/usr/bin/ijconsole will not.
>> So using /usr/bin/env is strictly less fragile.
>>
>> Using /usr/bin/env is standard for scripts.  /usr/bin/ijconsole entails
>> _strictly_ more fuss, more fragility, and less portability.
>>
>> An example: on many BSD systems, bash does not come with the base system, but
>> is rather provided as a separate package, so it is placed in /usr/local/bin.
>> Some scripts developed on linux are distributed that use #!/bin/bash, and 
this
>> breaks on BSD systems because there is on bash in /bin; when those scripts 
use
>> #!/usr/bin/env bash instead, they work.
>>
>> On Fri, 10 Mar 2023, Raul Miller wrote:
>>
>> >
>> > /usr/bin/$name is the earlier standard for minimal fuss distribution.
>> >
>> > Given that most J users are going to be in some IDE, I don't see that
>> > the /usr/bin/env approach would provide significant benefit to the J
>> > community. Especially if we're considering people who would be baffled
>> > about what to do with #!/usr/bin/ijconsole
>> >
>> > Do you think I've overlooked something important here?
>> >
>> > Thanks,
>> >
>> > --
>> > Raul
>> >
>> > On Fri, Mar 10, 2023 at 7:42 PM Elijah Stone <elro...@elronnd.net> wrote:
>> >>
>> >> Performance is irrelevant here--the difference in either case is 
miniscule.
>> >>
>> >> Using /usr/bin/env is standard practice in shebangs for finding binaries 
on
>> >> the path.  In some systems, it is conventional to put binaries that did 
not
>> >> come with the system in /usr/local/bin, or in /opt; whereas, the 
existence of
>> >> /usr/bin/env is mandated by posix.  We should not presume any more than we
>> >> need to about the way a user's system will be organised.
>> >>
>> >> On Fri, 10 Mar 2023, Raul Miller wrote:
>> >>
>> >> > Yes, the name ijconsole (iverson j console) was adopted to work around
>> >> > java's jconsole being in $PATH on many systems.
>> >> >
>> >> > This would also be an issue with /usr/bin/env
>> >> >
>> >> > But I don't see any high priority problems with /usr/bin/ijconsole as
>> >> > a standard location. There will be some users who cannot install J
>> >> > there, but it should be simple enough for them to build a tool to
>> >> > patch incoming J scripts with the install location that they used.
>> >> >
>> >> > (And, /usr/bin/env is going to be considerably slower than a bit of
>> >> > undefined verb parsing and garbage collection within J.)
>> >> >
>> >> > --
>> >> > Raul
>> >> >
>> >> > On Fri, Mar 10, 2023 at 6:51 PM Elijah Stone <elro...@elronnd.net> 
wrote:
>> >> >>
>> >> >> Fair enough.  I think the obvious thing is #!/usr/bin/env jconsole.  
But I
>> >> >> gather 'jconsole' is also the name of a java-related program, which 
might be
>> >> >> why debian uses 'ijconsole' (and I think I have seen 'jc' 
elsewhere--probably
>> >> >> for the same reason).  I therefore propose:
>> >> >>
>> >> >> 1. Rename jconsole to something which doesn't collide with anything 
heretofore
>> >> >> notable
>> >> >>
>> >> >> 2. Use #!/usr/bin/env that-something
>> >> >>
>> >> >> On Fri, 10 Mar 2023, Raul Miller wrote:
>> >> >>
>> >> >> > Perhaps, but I think it would be more useful to have a portable,
>> >> >> > agreed on path for systems which support the #! convention.
>> >> >> >
>> >> >> > That's required for J scripts to be distributable.
>> >> >> >
>> >> >> > Thanks,
>> >> >> >
>> >> >> > --
>> >> >> > Raul
>> >> >> >
>> >> >> > On Fri, Mar 10, 2023 at 12:04 AM Elijah Stone <elro...@elronnd.net> 
wrote:
>> >> >> >>
>> >> >> >> Perhaps it's simply time to tell the interpreter to start ignoring 
the first
>> >> >> >> line of a script if it starts with #!...
>> >> >> >>
>> >> >> >> On Thu, 9 Mar 2023, Raul Miller wrote:
>> >> >> >>
>> >> >> >> > The recent change in directory naming from j903 to j9.4 
introduces an
>> >> >> >> > interesting issue for shell scripts on unix-like systems.
>> >> >> >> >
>> >> >> >> > In J shell scripts, this works:
>> >> >> >> >
>> >> >> >> > #!/home/username/j903/bin/jconsole
>> >> >> >> >
>> >> >> >> > However, this fails with a spelling error:
>> >> >> >> >
>> >> >> >> > #!/home/username/j9.4/bin/jconsole
>> >> >> >> >
>> >> >> >> > Or, on OSX, the shebang line is different, but the spelling error 
remains:
>> >> >> >> >
>> >> >> >> > #!/Applications/j9.4/bin/jconsole
>> >> >> >> >
>> >> >> >> > That said, there's some other issues here, related to 
portability. One
>> >> >> >> > of which is that (as a general rule) a home directory is personal
>> >> >> >> > rather than portable. Another is that there's official java 
jconsole
>> >> >> >> > which does not understand J.
>> >> >> >> >
>> >> >> >> > But, also, for a long time now, Debian based distributions have 
been
>> >> >> >> > distributing j with /usr/bin/ijconsole as a symbolic link to the
>> >> >> >> > current installed location for J. (Here, the 'i' in ijconsole 
stands
>> >> >> >> > for Iverson.)
>> >> >> >> >
>> >> >> >> > So I think that now would  be a good time to adopt that as 
"documented
>> >> >> >> > standard practice" for j shell scripts.
>> >> >> >> >
>> >> >> >> > FYI,
>> >> >> >> >
>> >> >> >> > --
>> >> >> >> > Raul
>> >> >> >> > 
----------------------------------------------------------------------
>> >> >> >> > For information about J forums see 
http://www.jsoftware.com/forums.htm
>> >> >> >> 
----------------------------------------------------------------------
>> >> >> >> For information about J forums see 
http://www.jsoftware.com/forums.htm
>> >> >> > 
----------------------------------------------------------------------
>> >> >> > For information about J forums see 
http://www.jsoftware.com/forums.htm
>> >> >> ----------------------------------------------------------------------
>> >> >> For information about J forums see http://www.jsoftware.com/forums.htm
>> >> > ----------------------------------------------------------------------
>> >> > For information about J forums see http://www.jsoftware.com/forums.htm
>> >> ----------------------------------------------------------------------
>> >> For information about J forums see http://www.jsoftware.com/forums.htm
>> > ----------------------------------------------------------------------
>> > For information about J forums see http://www.jsoftware.com/forums.htm
>> ----------------------------------------------------------------------
>> For information about J forums see http://www.jsoftware.com/forums.htm
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to