HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
edc
bass
Python2015–2024
edc / bass

bass

Make Bash utilities usable in Fish shell

25Distinct people
29Mentions
0Explicit recommenders
2.5KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Make Bash utilities usable in Fish shell

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year29 dated mentions

Observed mentions: 2015-03-16 06:22:07 UTC to 2024-07-31 16:01:26 UTC.

02462015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments20152016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments20192020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 4 mentions; 1 submissions, 3 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 6 mentions; 0 submissions, 6 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 3 mentions; 1 submissions, 2 comments2024

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC202
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC202
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC303
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC404
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC000
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC413
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC606
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC000
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC505
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC312

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
Bass Bass makes it easy to use utilities written for Bash in fish shell. Regular bash scripts can be used in fish shell just as scripts written in any language with proper shebang or explicitly using the interpreter (i.e. using bash script.sh). However, many utilities, such as virtualenv, modify the shell environment and need to be sourced, and therefore cannot be used in fish. Sometimes, counterparts (such as the excellent virtualfish) are created, but that's often not the case. Bass is created to make it possible to use bash utilities in fish shell without any modification. It works by capturing what environment variables are modified by the utility of interest, and replay the changes in fish. You might not need Bass for simple use cases. A great simple alternative (suggested by @jorgebucaran) is to just use exec bash -c "source some-bash-setup.sh; exec fish". Installation Bass is compatible with fish versions 2.6.0 and later. Manually Use the Makefile. make install will copy two files to ~/.config/fish/functions/. make uninstall will remove those two files. Relaunch the shell for the change to take effect. With Oh My Fish omf install bass With Fisher fisher install edc/bass With Fundle Add fundle plugin 'edc/bass' to your fish config, relaunch the shell and run fundle install. Example Bass is simple to use. Just prefix your bash utility command with bass: > bass export X=3 > echo $X 3 Notice that export X=3 is bash syntax. Bass "transported" the new bash environment variable back to fish. Bass has a debug option so you can see what happened: > bass -d export X=4 # updating X=3 -> 4 set -g -x X 4 nvm Here is a more realistic example, using the excellent nvm: > bass source ~/.nvm/nvm.sh --no-use ';' nvm use iojs Now using io.js v1.1.0 Note that semicolon is quoted to avoid being consumed by fish. This example takes advantage of the nvm bash utility to switch to iojs. After the command, iojs is accessible: > which iojs /Users/edc/.nvm/versions/io.js/v1.1.0/bin/iojs You can then very easily pack the command as a function and feel more at home: > funced nvm nvm> function nvm bass source ~/.nvm/nvm.sh --no-use ';' nvm $argv end > nvm list -> iojs-v1.1.0 system > nvm ls-remote v0.1.14 v0.1.15 > funcsave nvm ... (--no-use is an important option to nvm.sh. See #13 for background.)
Read the full README on GitHub

What Hacker News says

29 sources
dljsjr·Jul 31, 2024Submission

Show HN: Call Bash/ZSH/POSIX shell functions and built-ins from Fish

Wanted to share a little tool I made that I'm calling `pisciform.fish`, heavily inspired by replay.fish[1] and bass.fish[2], but with a bit more oomph. The tool allows you to create a fish function that mirrors a function definition from another shell. Because a shell function can mutate the calling environment (similar to using `source` on a shell script), the main mechanic of the wrapper is to look for environment mutations and play them back in the calling fish shell. This technique for bridging the different shell environments is inspired by replay and bass, but there are some slight differences. The README for the repo provides a more detailed overview, including a more detailed explanation of how this tool differs from what already exists. My motivation for making this is the fact that I've wanted to move over to `fish` for years fo
Read the rest
r personal preference, but I was held back by a handful of things: 1. I like to create and share shell tools with my teams in professional settings, and getting a whole team to move to `fish` is likely a non-starter; plus, POSIX or Bash or ZSH are the lingua franca of shell scripting (short of Python). 2. While a shell script with a shebang is already portable, I prefer writing shell functions over writing shell scripts when feasible for a variety of reasons. 3. I'm coming from ZSH, where both replay and bass only speak Bash. 4. Most of the ZSH tools that I've written over the years are autoloadable function files, which can't just be `source`'d. 5. These are sometimes complicated tools that do more than just export variables, which bass and replay are more oriented towards. I needed to be able to run arbitrary commands, support interactivity, etc. --- [1]: https://github.com/edc/bass [2]: https://github.com/jorgebucaran/replay.fish
1 points · Open discussion
I think for the devops person or someone doing server administration (sysadmins etc) powershell everywhere must make things easier even with the trade offs (as some have mentioned, it does have a bigger memory foot print, which may or may not matter depending on a host of factors) As a developer? I haven't found PowerShell more useful than zsh/bash or fish (if you haven't, try fish, it has a lot of benefits of PowerShell (fish has its own scripting language that is more "language like", like some of the more simple constructs of Python, syntax wise) but via a simple plugin[0] you get bash compatibility too, and its made for Unix like environments). I do like that it has a rich object data model, I just don't do that kind of thing in my shell. I mostly use aliases, shortcuts, and maybe some grepping. I don't do heavy duty tasks from the co
Read the rest
mmand line where I'm not writing the logic in the first place, and I just find it easier to use the standard that my team does (currently, this is JavaScript, with the shebang it executes just like a binary. We can reliably say everyone has the same version of node) Maybe in the future this will change, but I don't see the win to divide my attention economy to it deeply, personally. [0]: https://github.com/edc/bass
In Linux and Powershell

Showing the 15 most recent of 29 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.