Giter Club home page Giter Club logo

Comments (8)

skycaptain avatar skycaptain commented on July 18, 2024 2

I was facing the same issue today. I was just about commiting a fish version of the oe-init-build-env and oe-setup-builddir scripts to their mailing list, before a came across this project, which seems more reasonable to me, as rewriting bash scripts for fish can be tenacious and expensive.

Anyway, I had a look at the sources, especially at this part:

    command = 'eval $1 && ({}; alias) >&{}'.format(
        env_reader,
        pipe_w
    )
    args = [BASH, '-c', command, 'bass', ' '.join(sys.argv[1:])]

@edc Could you please explain what passing 'bass' as a parameter to bash here does?

I guess changing these lines to the following would solve the issue for us:

    command = 'eval $0 && ({}; alias) >&{}'.format(
        env_reader,
        pipe_w
    )
    args = [BASH, '-c', command, ' '.join(sys.argv[1:])]

from bass.

hellow554 avatar hellow554 commented on July 18, 2024

Funny enough, when I type

fish ~/.local.share/omf.pkg/bass/functions/bass.fish source a.sh the output is empty as well like bash would do. That's something beyond my paygrade ;)

from bass.

edc avatar edc commented on July 18, 2024

This is very interesting. I looked into it, and this seems hard to fix because we intentionally set $1 etc to mimic running the script:

$ cat a.sh
echo $1
$ bass ./a.sh abc
abc

from bass.

hellow554 avatar hellow554 commented on July 18, 2024

wontfix is a disappointing label :(

The difference is that your command is bass ./a.sh and mine is bass source a.sh. So you could distinguish it.

from bass.

hellow554 avatar hellow554 commented on July 18, 2024

The difference is that your command is bass ./a.sh and mine is bass source a.sh. So you could distinguish it.

ping @edc

from bass.

zavorka avatar zavorka commented on July 18, 2024

@skycaptain

@edc Could you please explain what passing 'bass' as a parameter to bash here does?

I guess changing these lines to the following would solve the issue for us:

    command = 'eval $0 && ({}; alias) >&{}'.format(
        env_reader,
        pipe_w
    )
    args = [BASH, '-c', command, ' '.join(sys.argv[1:])]

Scripts that access the value of $0 expect to find a path to an interpreter or a path to themselves, a space-delimited list of words will thus likely be something they are not prepared to handle.

from bass.

skycaptain avatar skycaptain commented on July 18, 2024

Thanks @zavorka. I can confirm that your PR is working with the openembedded init script.

from bass.

edc avatar edc commented on July 18, 2024

According to the -c section of bash manual:

Read and execute commands from the first non-option argument command_string, then exit. If there are arguments after the command_string, the first argument is assigned to $0 and any remaining arguments are assigned to the positional parameters. The assignment to $0 sets the name of the shell, which is used in warning and error messages.

I think [BASH, '-c', command, 'bass', ' '.join(sys.argv[1:])] is the appropriate way to invoke it, though we should probably replace bass with something more appropriate because clearly it is not just "used in warning and error messages".

from bass.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.