On Tue, 21 Aug 2018 18:36:27 +0200 Juergen Sauermann <juergen.sauerm...@t-online.de> wrote:
> Hi Hudson, > Hi, > aas far as I know you can use a relative path to apl as long as the > apl binary is in your $PATH. Thus '#!apl --script' probably works > regardless of whether apl is installed in /usr/loccal/bin or > in /user/bin. /usr/local/bin is in $PATH, but #!apl does not work. > > However, my own personal experience with relative paths is quite > negative and troubleshooting problems caused by relative paths can be > rather time-consuming. So one of my golden rules (another one > mentioned earlier) is: "always prefer absolute paths over relative > paths". `ln -s /usr/local/bin/apl /usr/bin/apl` results in error, because apl cannot find libraries by itself. But I can stick with this absolute path (for bash instead of apl): #!/bin/bash ':' ⎕EA''⍝;exec apl -s "$0" "$@" > > The reason for #! comes from man(2) execve. My question is about GNU APL reading .apl files with )copy or )load. Thanks, Hudson > > /// Jürgen > > > > On 08/21/2018 03:24 PM, Hudson Flavio Meneses Lacerda wrote: > Hi Jürgen, > > Indeed, for my own local computer, I could install apl in /usr. > > However, I also use third-part computers as restricted user ($), with > apl installed in a different path (under ~/). > > Here is my new approach (trying to avoid side effects): > > ---8<---------------------------------- > #!/bin/bash > 'true' ⎕EA ''⍝;exec apl -s -f "$0" "$@" > ⍝-------------------------------------- > '⍝ Body of script' > ⎕RL←×/⎕TS~0 > ?⍨ 20 > '⍝ End of script' > )off > ---------------------------------->8--- > > (That can work fine with bash or dash, but not with sash.) > > By the way, why APL files need to start with "#!" to be accept by > )copy/load? > > Cheers, > Hudson > > > > > On Tue, 21 Aug 2018 11:14:30 +0200 > Juergen Sauermann <juergen.sauerm...@t-online.de> wrote: > > Hi Hudson, > > you can ./configure GNU APL with prefix=/usr and then recompile and > install. > > /// Jürgen > > > On 08/21/2018 03:34 AM, Hudson Flavio Meneses Lacerda wrote: > Hi. > > Some of my scripts use `#!/usr/bin/apl --script` (from Debian), but > now I am using SVN, so I should use `#!/usr/local/bin/apl --script`. > So, I need to change the scripts, that may be incompatible with > different environments… > > I have tried: > > #!/usr/bin/env apl > #!apl --script > #!/usr/bin/apl --script > #!/usr/local/bin/apl --script > > So far, the best solution I could find (so that I do not need to > change the files in the future) is this file header: > > ---------------------------------------------------- > #! > true ← ~false ← 0 ⍝; exec apl --script "$0" "$@" > ---------------------------------------------------- > > Are there any better solutions? > > Thanks, > Hudson > > > > > > > > > >