Live data from Hacker News

Fish shell

fishshell.com

111–120 of 188 posts

Re: Fish shell

#111
post #92

Earlier quoted context omitted.

Using fish doesn't mean you have to stop using existing bash scripts.

I understand that, but my point was that Fish is yet another big missed opportunity.

Fish (like zsh) may leave a lot to be desired, but it is an enormous improvement over bash. I have been using fish for several years, and especially its autocompletion is indispensable to me. (However, I use it as an interactive shell only; TCL is my scripting language of choice.)

Re: Fish shell

#112

Hey, I'm the lead dev of the fish shell. There's some great discussion in this thread! For those who are interested, the fish shell is about to release version 2.2, a very significant release that wraps up eighteen months of development. You can try the beta now: http://fishshell.com/beta/ A sampling of new features: - vi mode (yay!) - Abbreviations, fish's take on aliases. They expand as you type them. - A new "inli…

Any chance that we'll be able to have fish not resolve symlinks in the future? This is the only problem keeping many people from using it.

Re: Fish shell

#113

Hey, I'm the lead dev of the fish shell. There's some great discussion in this thread! For those who are interested, the fish shell is about to release version 2.2, a very significant release that wraps up eighteen months of development. You can try the beta now: http://fishshell.com/beta/ A sampling of new features: - vi mode (yay!) - Abbreviations, fish's take on aliases. They expand as you type them. - A new "inli…

It sounds amazing.

Hey, since you are the lead dev of the fish shell, a serious problem occurred to me weeks ago, I was compiling a QT client in fish, and there is already an environment value called `LD_LIBRARY_PATH` (including other values the compilation needs) defined in /etc/ld.so.conf.d/ and /etc/profile.d/ but fish cannot find them, if I use `set -g ...` to set it in fish shell prompt and then do the compilation, it will work, it took me a lot time to figure it out that this is the problem of fish-shell, the weird thing is, there is already one line `#!/bin/sh` at the beginning of the compilation script (it is a bash script called build.sh), so it should be executed under sh which is bash in my CentOS.

Re: Fish shell

#114
post #72

Earlier quoted context omitted.

Someone's gotta explain to me how and why oh-my-zsh is slow. I've never once experienced it being slow for me. In fact, I switched to prezto and it was unbelievably slow. I switched back to oh-my-zsh. Maybe I'm just not using it right...

OMZ got painfully slow for me when I used it with a lot of plugins and it was iterating over a lot of different file paths. It seems like ZSH has an issue when you're loading a mass amount of files...or maybe it's just the way OMZ is loading them?

Are you on a mac by chance? I ran into a really weird problem on OSX, still happens as of the latest Yosemite beta, where if you have a lot of system logs laying around, the shell takes an inordinately long time to start (10+ seconds) and do autocompletes.

If you clear out your logfiles by trashing /private/var/log/asl/*.asl, there's a pretty decent speedup.

Re: Fish shell

#115
post #105

Hey, I'm the lead dev of the fish shell. There's some great discussion in this thread! For those who are interested, the fish shell is about to release version 2.2, a very significant release that wraps up eighteen months of development. You can try the beta now: http://fishshell.com/beta/ A sampling of new features: - vi mode (yay!) - Abbreviations, fish's take on aliases. They expand as you type them. - A new "inli…

[deleted]

Some background: the "symlink problem" refers to this: http://fishshell.com/docs/current/faq.html#faq-cwd-symlink

In bash, if you cd into a symlink and then cd .., you get back to where you started. But fish will resolve the symlink, and so it will take you to the destination's parent.

The price bash pays is inconsistencies between external commands and builtins. For example, `ls ..` can output something different than `cd .. && ls`. This is because the kernel maintains the cwd as an inode, not a path.

I don't know of anyone who is wedded to the existing behavior. If you feel strongly about it or have ideas for how it ought to work, please comment in the issue! https://github.com/fish-shell/fish-shell/issues/1957

Re: Fish shell

#116

Hey, I'm the lead dev of the fish shell. There's some great discussion in this thread! For those who are interested, the fish shell is about to release version 2.2, a very significant release that wraps up eighteen months of development. You can try the beta now: http://fishshell.com/beta/ A sampling of new features: - vi mode (yay!) - Abbreviations, fish's take on aliases. They expand as you type them. - A new "inli…

BTW, you should mention https://github.com/fish-shell/fish-shell/wiki/Nightly-builds after "You can try the beta now", because I cannot get beta at http://fishshell.com/beta/

Re: Fish shell

#117
post #57

I used to use fish, and emacs. But when I switched to vim, I had to switch away from fish as well because of its lack of vi bindings. It is a little disappointing to go back to using bash, but as long as bash-completion is working, it's not really a big issue. Of course, I do miss the syntax highlighting. (I would use zsh, but it provides little benefit over bash out of the box and is slower (oh-my-zsh is unbearably…

> vi-mode, obviously As you said at the end, Fish does have this. I don't know if it's full-featured enough for you though. > Control+R. It is annoying to have to guess how much you must type before hitting the up arrow, instead of having it dynamically displayed When you start typing a command-line in Fish that matches a previously-typed command, it automatically shows the rest of the line as an available completion…

> When you start typing a command-line in Fish that matches a previously-typed command, it automatically shows the rest of the line as an available completion, and pressing ^F or the right arrow will complete it for you.

^R is more powerful, though; it matches at any point in previous commands, not just at the beginning.

> The lack of this functionality actually really kills my ability to use any other shell.

You can achieve that behavior in readline (which is used by bash, python shell, etc.) by changing the up/down arrows from previous-history/next-history to history-search-backward/history-search-forward. In ~/.inputrc:

  "\e[A": history-search-backward
  "\e[B": history-search-forward
Note that you can still use ^P/^N for previous-history/next-history (or you can remap "\C-p"/"\C-n" as well).

Re: Fish shell

#118

Hey, I'm the lead dev of the fish shell. There's some great discussion in this thread! For those who are interested, the fish shell is about to release version 2.2, a very significant release that wraps up eighteen months of development. You can try the beta now: http://fishshell.com/beta/ A sampling of new features: - vi mode (yay!) - Abbreviations, fish's take on aliases. They expand as you type them. - A new "inli…

After updating to v2.2b1 using instructions at https://launchpad.net/~fish-shell/+archive/ubuntu/beta-2, these occurs to me in my original conf.fish file:

========================================================

# count the number of the files in the dir(not sub.), use tree | wc -l for subdirs # alias lsc ls:command not found ~/.config/fish/config.fish (line 67): # alias lah 'la --color=yes --sort=time -lh | head' # count the number of the files in the dir(not sub.), use tree | wc -l for subdirs # alias lsc 'ls -all | wc -l' ^ in function 'fish_prompt' called on standard input

in command substitution called on standard input

Warning: Identity file

alias cp cp not accessible: No such file or directory.

Warning: Identity file

alias mv mv not accessible: No such file or directory.

Warning: Identity file

alias rcp rsync not accessible: No such file or directory.

unknown option -- -

usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]

           [-D [bind_address:]port] [-E log_file] [-e escape_char]

           [-F configfile] [-I pkcs11] [-i identity_file]

           [-L [bind_address:]port:host:hostport] [-l login_name] [-m mac_spec]

           [-O ctl_cmd] [-o option] [-p port]

           [-Q cipher | cipher-auth | mac | kex | key]

           [-R [bind_address:]port:host:hostport] [-S ctl_path] [-W host:port]

           [-w local_tun[:remote_tun]] [user@]hostname [command]
>

========================================================

Re: Fish shell

#120
I do quite a bit of programming in bash. One construct in bash is absolutely super: process substitution. You can read the output of a program as if it were a file with the construct: Bash is a fine tool, but it has a number of flaws that prevent me from using it for certain tasks.

* Functions can only return a status number. Functions are always subshells.

* The hashtable (associative array) syntax is unpalatable, unreadable, and a real abomination. I simply don't use it, because it gives me a headache.

* I can never remember the horrible syntax for most string functions.

* You cannot reasonably store an arbitrary json structure in memory. Embedded lists and hashtables are absolutely unwieldy.

* Bash has no concept of FFI (Foreign-function interface). So, you cannot load an external library and invoke functions it it.

These problems are not particularly impossible to solve, but the Bash authors will probably never do it. Therefore, the final reproach against bash is that they do not publish their source code in an environment similar to github, where users can file their issues and improvement requests. In other words, the bash authors are not in communion with their users.

In what way can the fish shell address these problems?

Post reply on HN