Hacker News new | ask | show | jobs
by w23b07d28 1151 days 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.

1 comments

How do you run scripts in bash while using fish as your shell?
you 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.
Ah. I meant cases where lazy third-party scripts just assume my current shell is POSIX and don't explicitly make themselves run in bash.
Run "bash thirdparty.sh" instead of "./thirdparty.sh" to force bash.
if 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
Yes. 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.
not 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.

scripts begin with a line like

    #!/usr/bin/env bash
which works regardless of the executing shell