6 ms·
With love: I always felt like fish and even zsh are kind of beautiful OCD-induced bouts of counter productivity in the same vain as Dvorak keyboard layouts and
by recuter 13y ago
With love: I always felt like fish and even zsh are kind of beautiful OCD-induced bouts of counter productivity in the same vain as Dvorak keyboard layouts and Plan 9. We can't handle things being messy and imperfect so we solve it by building our own parallel universes.
What do you do when you have to use a computer without your customization? Perfect is the enemy of good, worse is better, join us on the dark side, all that jazz. :)
Is fish really really REALLY worth it?
- AnthonBerg 13y agoYes.
- stiff 13y agoWhat do you do when you have to use a computer without your customization? Uh, by that logic I would only use notepad.exe.
- recuter 13y agoYes, that would be the other extreme -- just like fish, in the opposite direction. I'm thinking there's a happy medium. But maybe this isn't such a problem, note I prefaced my comment 'with love'. I'm asking, not telling.
- mitchty 13y agoAs a zsh user, I am not really seeing the problem. Even Solaris had zsh in the default install. I don't see why avoiding installing an rpm/deb is any better or worse than not. For regular shell scripts I tend to still prefer #!/bin/ksh and not bourne shell (no bash is not bourne shell). I have to admit the line of thinking you're advocating reminds me of the vim/emacs "wars". With the "vim is on ALL THE SERVERS", well yeah but unless i'm at a serial console thats not all that convincing as a TRAMP user. I customized tramp so I could edit files remotely through sudo. What do I care about the version vim installed on the servers?
- binarycrusader 13y agoEven Solaris had zsh in the default install. Actually, it's still part of the "default" group packages (similar to an installation profile). The default shell for new users (including root) is now bash though.
- mitchty 13y agoHeh, I haven't used 11 much I still remember it being in SUNWCXall or whatever that group was.
- shawndumas 13y agovim?
- drdaeman 13y agoFor example, Dvorak layout helped me with wrist pains. I didn't lose ability to type on QWERTY after the transition, it's just less convenient to me now. That applies to all non-customized systems - they are are just less convenient, and that's about it. I don't see any problem with using whatever pleases you (even if those are very obscure tools), if with transition you don't lose ability to use less convenient (but common) tools on occasion. And you usually don't lose that.
- siteshwar 13y agoThe argument that "fish is not customizable" is not true. Fish is customizable, but at the same time it hides unnecessary complexity from the user. For e.g. You can customize colors in fish, but you can't customize size of the history file (How many people do it ?). fish comes with sane defaults and most of the times you won't need to change any configurations unless you have very specific requirements.
- djur 13y agoBeing able to set a very high limit for my history file and to share history between instances is a major usability feature in zsh for me. Not being able to do that is honestly reason enough to rule out an alternative shell.
- berdario 13y ago250k items is not enough for your history file? Also, fish shares the history between the shells out of the box, unlike zsh... but it chose to do it in a different way (that is, commands are available even if one of the shells hasn't been closed, unlike bash... but they aren't available right away after entering a single new command, like most zsh configurations that I've seen)
- hyperpape 13y agoAre we going to use sh and its descendants for the next 100 years? The original shells evolved out of macro processors, and as time went on, more and more programming language features were bolted on, but it's an uneasy fit. Take it for a test: go write a project euler problem (or any small programming task--doesn't have to be math) in your shell of choice. It's painful. There are weird features of shell languages that will never go away (globs and unquoted strings sharply limit the design space), but even given those limitations, it's possible to design nicer languages. I don't fault someone for saying "right now, I'd rather use the default shell my box comes with, because the pain points of switching are too high". But yes, we really do need something to replace it. I think both zsh and fish make nice steps, but I don't think either really meets my hopes.
- recuter 13y agoI don't think we are disagreeing. From the tutorial in the OP: "If you have a strong understanding of other shells, and want to know what fish does differently, search for the magic phrase unlike other shells, which is used to call out important differences." "stdin and stdout can be redirected via the familiar < and >. Unlike other shells, stderr is redirected with a caret ^" That's pretty, no argument there. But I already remember to count the std's from 0, so stderr is &2. Not as pretty, fish is nicer, no argument. But its not MUCH nicer, and I'm going to have to use &2 here and there in my life anyway... So: - fish has no dedicated syntax for setting variables - fish does not have an export command - fish stores the exit status of the last command in $status instead of $?. - fish does not use backticks ` for command substitutions. Instead, it uses parentheses.. I'm pretty sure good bash form is $() these days, not backticks. So you're spared the dollar sign. 'etc 'etc. I agree we need something to leapfrog what we have but these changes, while nice improvements, seem minor. At least as far as I can see! That's why I asked. Maybe there's some more neat stuff that makes it a significant improvement.
- mixmastamyk 13y agoThe syntax highlighting is 90% of why I use it, everything else is gravy.
- 13y ago
- jlgreco 13y agoI really don't think that zsh is born of some desire to keep things from getting messy. That doesn't seem to be what it does in practice anyway, particularly with the popularity of things like oh-my-zsh. Rather I think zsh is born from a desire to have more. More functionality and more customization options. > What do you do when you have to use a computer without your customization? How are people running into this situation so often? I don't sit down at my coworkers desks and start using their accounts. On production servers, I still have zsh and although some of my custom utilities are missing, it is not like I am somehow crippled by their absence. This concern is like being opposed to cordless drills and screwdrivers because "what would happen if you found yourself with only a regular screwdriver?" ...well, what of it? If I found myself inexplicably with only a regular screwdriver, I would use it. Not a big dea. It's not like zsh users turn into blithering idiots as soon as they don't have their fancy PS1 set and are missing a few completion options.
- recuter 13y agoI'm kind of posting too much so I'll stop, I really tried to phrase my questions in a friendly manner but it seems they invite misreadings. Apologies. One final clarification: I agree with this attitude if indeed this was the case. I don't see how zsh or fish constitute cordless drills and screwdrivers, it feels more like they are the right-y version to the left-y version of the regular screwdriver. But maybe its because I don't know their killer features, I always try to pay attention to them and play with them occasionally but it never clicked for me why its so much better.
- jlgreco 13y agoimho, this is a large portion of the killer feature of zsh: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html
- lelandbatey 13y agoKeep in mind also that no matter how civilly you phrase things, your still talking about the "religion of tools" which may draw strong responses to otherwise nice questions.
- RBerenguel 13y agoSide attack against Plan 9? Plan 9 is neat ;) (and zsh too, I still have found no reason to spend more than 10 minutes with Fish with every new release)
- GrinningFool 13y agoZSH user here, with plenty of custom additions to it. For me it's not about building a parallel universe - it's about using tools at hand to make my life easier. Whether it be giving me information that I want, when/where I want it, or saving a few tens or dozens of keystrokes, it all comes down to the same thing. "What do you do when you have to use a computer without your customization? " I can't answer for other people, but when I am logging into other systems I am very seldom performing the same tasks that I do on my development workstation. I don't need those customizations because I'm not doing the kinds of things that require them. So when I log into another system, I just use it. I don't try to do the things that I can do on my local system - maintaining awareness of the differences is not a challenging thing.
- otikik 13y agoWhen I need to use my configurations in other computers, and it's something more difficult than copying a file, I put them online so I can install then with a curl + sh command. But that has happened exactly once. Usually I just need to copy and paste one file.
- GlitchMr 13y agoIf by customization you mean changing key bindings, prompts, colors, adding new functions, well, you can change that. If by customization you mean setting what happens when you write invalid glob, how much you can store in the history, whether prompt beeps on error, whether integers starting with 0 are octal, what regular expression engine is used, and so on, feel free to use zsh - it's great, really, after you configure everything, that is - fish shell won't let you change that by design. This is not a flaw - author believes that configuration is the root of all evil (and I agree with him).
- Derbasti 13y agoI am not convinced. How much time can I spend on customizing something to be more convenient and still save time in the long run? Can I spend half an hour to speed up a task I do daily by five minutes? Can I spend a month learning Emacs and save time in the long run? Can I spend two weeks learning how to touch-type? The answers invariably are very much dependent on your personal work. But to me, the far more important question is: Can I do anything that makes my life more pleasant? To me, personally, fish really improves my enjoyment of terminal usage. Productivity does not even enter this equation, but I suspect that I work faster when I am happy. I in fact do use fish, and Emacs, for the simple reason that I enjoy using them. I might be more productive with other tools, but I would not enjoy my work as much. So yes, it is a matter of love. Do what you love, not what pays best.
- lelandbatey 13y agoActually, that's a calculate-able thing, and Xkcd has already saved us the time: http://xkcd.com/1205/ http://xkcd.com/1205/
- csandreasen 13y agoI have the same comic posted over my desk. I've wondered in the past why the author didn't bother including the cases of 6 hours/day or 1 day/week saved, although I'll admit I have yet to accomplish anything that impressive. I'll just keep it as long term goal to prove the edge cases in xkcd comics wrong. :)
- reledi 13y agoWell said. I try to optimize for happiness and I'm much happier using fish than bash (which I'm reminded of every time I have to temporarily use bash).
- tempOCDer 13y agoNot too be too PC, but OCD != anal. If someone is really OCD about being tidy it's because they think if they're not something horrible will happen.
- saidajigumi 13y ago> What do you do when you have to use a computer without your customization? As someone who has used an increasingly customized *nix command-line environment for decades, I'll say that this corner-case occupies a vanishingly small amount of my time. I just doesn't make sense to optimize for it. I currently use zsh, which is frequently not available by default. This implies installing a package, and I don't see how that's any worse for fish. I freely admit that my workflow as a developer vs. (e.g.) a sysadmin provides a greater degree of relative control over my day-to-day working environments. I do have to work in non-customized environments from time to time. I find this no worse than using Someone Else's Keyboard -- maybe there's some clumsiness at first, but you soon get the hang of it. If you switch environments frequently, the switch becomes unnoticeable. That said, I've also put continual effort into portability and ease of deployment of my customizations over the years. I can run one command on a networked host and have my rcfiles land there and be ready to use. This is pretty easy to do with a git-managed homedir repo, especially on a provider like GitHub where you can fall back to grabbing tarball if needed. I currently use vcsh[1] & mr[2] to manage my repos -- for that I use a bootstrap script hosted in an orphan branch of the same repo.[2] An efficient setup process of this type also makes it easy to integrate with provisioning tools, e.g. Puppet, Chef, or even just shell scripts. [1] https://github.com/RichiH/vcsh https://github.com/RichiH/vcsh [2] http://myrepos.branchable.com/ http://myrepos.branchable.com/ [3] https://github.com/jwhitley/vcsh-root/tree/bootstrap https://github.com/jwhitley/vcsh-root/tree/bootstrap
- AsymetricCom 13y agoGreat point, my iPad doesn't even have an addressable kernel, let alone a terminal emulator or command line! Why bothering to learn how to drive a car, I'm not even in a car right now, what would I drive?! Is having the freedom to move from place to place REALLY worth it?
- perishabledave 13y agoYou can't have a blanket statement saying, fish is/isn't worth it, just as you can't say that with Dvorak or Plan 9. If you spend a majority amount of your time on one or a few machines, it can very well be worth it to customize your experience on those machines and face the drawbacks on the few times you are on a foreign machine. On a side note: This is my computer. There are many like it, but this one is mine.
- hibbelig 13y agoI think it's different for different people. I have tried fish for a while and then went back to bash because it just didn't feel worth it for me. I'm sure I'll come back to the new version, though. But back in bash-land, _of course_ I alias "ll" to "ls -Flah". And when I'm on a system that doesn't have this alias, then, well, I just type "ls -la". As others explained, just because I've customized my work environment doesn't mean I've forgotten to use the plain versions.
- derleth 13y agoWhy get a nice car and customize it when you know you'll eventually have to drive someone else's shitbox Ford Focus? Your seat warmer and ergonomic gearshift handle will help you not a whit in that testament to True Detroit Steel.