7 ms·
> I don't write much of bash or fish, I mean scripts written by others. Encounter cryptic error messages then realize script is just assuming shell is POSIX I
by w23b07d28 3y ago
> I don't write much of bash or fish, I mean scripts written by others. Encounter cryptic error messages then realize script is just assuming shell is POSIX
I run most of my scripts in Bash, but what I can, I convert to Fish. If the advantages of Fish are less important than POSIX compliance, I won't suggest anything, because I have no need to be POSIX compliant, so maybe I don't really have the same concerns. :)
> Starship plenty fast for me. You say it's completely different than OMF but from what I see they both exist to customize your prompt, no?
Forgive me, I mistakenly assumed you meant that Starship runs too slowly. It depends on how you define prompt. Strictly it will be whatever is shown in the terminal when it waits for user input. OMF is a multi-tool that, in addition to modifying the appearance, acts as something like a plugin manager. Starship gives you "just the look". I think a good analogy would be to compare systemd and runit in 1 category.
- throwaway290 3y agoHow do you run scripts in bash while using fish as your shell?
- em-bee 3y agoyou execute them like any other script. the script is not interpreted by your interactive shell but it specifies which shell/interpreter will be used to run it. that interpreter is then started for this script. your interactive shell does not limit what kind of scripts you can run. there was never a requirement that bash scripts need to be started from a bash shell. otherwise you could not even run python or other scripts from your shell.
- throwaway290 3y agoAh. I meant cases where lazy third-party scripts just assume my current shell is POSIX and don't explicitly make themselves run in bash.
- Macha 3y agoRun "bash thirdparty.sh" instead of "./thirdparty.sh" to force bash.
- em-bee 3y agoif there is a bash script that does not start with #!/bin/bash where the instructions say to run it in bash, then it can be run as bash scriptfile; or cat scriptfile | bash;. both these forms work from any commandline shell
- throwaway290 3y agoYes. But I need to inspect the script to know to do it (or hope that if it didn't fail then it truly didn't fail). I am not saying it's an insurmountable challenge, just that there is some friction when using fish.
- em-bee 3y agonot really, unless there is a clear indication that it is a fish script, i's just asume it is bash and run it with that. it's only work if the commands need to be run within fish itself and not a subshell. there are tools for that but i agree that sometimes i can't be bothered and then i'll just work in bash to do that job.
- throwaway290 3y agoFor example if I follow some README I may not even know whether it's a script or binary, so I guess I would need to know at least that before I run something with bash (or get "cannot execute binary":)
- preseinger 3y agoscripts begin with a line like #!/usr/bin/env bash which works regardless of the executing shell