8 ms·
Find me a real world case where switching from bash to zsh was a bad idea.
by endlessvoid94 14y ago
Find me a real world case where switching from bash to zsh was a bad idea.
- adestefan 14y agoIt would be too much of a PITA for me to compile zsh for every OS/arch that I work with in a given day. I ssh to dozens of machines in a day ranging from modern Linux to ancient versions of Solaris and HPUX. Over 10 years ago we added bash to our standard software that will be on every system we have, which means I know that my bash configuration will be the same across every single platform.
- CJefferson 14y agoScripts with no '#' line at the top are run in bash by bash, and in sh by zsh (at least on my machine). I had a program which used a bunch of such scripts, which broke in zsh.
- saurik 14y agoEven if the answer is "none", zsh will need to additionally defend "what is the advantage of zsh for someone who already knows how to use bash", as any form of switch is going to come with a cost. I would therefore be really interested in your reasons (I use bash, as currently do all of the people I know and work with; [edit: apparently except one]). It seems like most of the features listed as better than bash are either a) covered by bash 4.0, b) bad ideas (shared history among sessions), or c) only controversially better (searching around, people seem to argue back/forth about which programmable completion implementation is faster/better).
- xyzzyb 14y agozsh had me when I realized that 1) it's a drop in replacement for bash. All those scripts you have around have #!/bin/bash at the top, they will still work exactly as they always have. 2) You can selectively go back through your command history. You can arrow-up to go to previous commands just like in bash. But if you start a command (say, ssh) and then arrow-up you will then be cycling back through the last ways you entered that command. Super convenient.
- BCM43 14y agoBut if you start a command (say, ssh) and then arrow-up you will then be cycling back through the last ways you entered that command. Like Ctrl+R?
- xyzzyb 14y agoNot exactly, but similar. If you want to see a demo, Ryan Bates highlights this feature (among others) with his ZSH screencast: http://railscasts.com/episodes/308-oh-my-zsh http://railscasts.com/episodes/308-oh-my-zsh
- bretthoerner 14y ago> You can arrow-up to go to previous commands just like in bash. But if you start a command (say, ssh) and then arrow-up you will then be cycling back through the last ways you entered that command. Or, if you'd like to do this in Bash, and any program that uses readline: In ~/.inputrc # Bind the up arrow to history search, instead of history step "\e[A": history-search-backward # And the reverse (down) "\e[B": history-search-forward
- eridius 14y agoI find it easier to just hit ^R when I want to search my history. And since that's a default keybinding, it works on any machine I touch.
- threedaymonk 14y agoI recently moved from tcsh to zsh, and this is one thing that seems to be a bit weird in zsh. For example, given git clone git rebase master git log in my history, if I typed git r<UP> I get 'git log', not 'git rebase master' as I'd expect.
- burgerbrain 14y agoTry: bindkey "^[[A" history-beginning-search-backward
- aaronroyer 14y agoI agree that using zsh has to be justified. My suggestions for bash users who want to get more out of their (interactive) shell are: 1. Learn bash better. Lots of low-hanging fruit there to increase your productivity with minimal effort. 2. Learn how to customize your environment in bash. Know what every line in your dotfiles does. Add to your dotfiles gradually as you learn. 3. If you learn about some cool features in zsh, see if bash has the feature already. If it doesn't, see if you can mimic it easily with your own functions or scripts. 4. If you still want more features, make the switch to zsh and repeat steps 1 and 2 with zsh. I think the worst is when people see a novel trick and switch to zsh and slam in oh-my-zsh* without knowing any shell basics. Now you have another shell and a big pile of code and you don't understand any of it. This usually won't cause problems, but you almost certainly won't be getting the most out of your shell. You'd be better off in most cases just digging into bash a little deeper. I use zsh now, but I only switched after learning what bash could do and what its limitations are. I'll reevaluate zsh vs. bash 4.0 at some point, but for now I see zsh installed by default more often than bash 4.0 and it seems to me that most users interested in the best interactive shell experience are still on zsh and I like to learn from them. * - I think oh-my-zsh is a great project - I'm not knocking it. I've borrowed lots of great stuff from it. But I think you should understand every line of code you are dumping into your environment, whether you are using oh-my-zsh or not.
- rwg 14y agoWell, I switched from csh to zsh and almost got arrested. While a senior in high school (~15 years ago), I was also enrolled at the local university and taking a few 1000- and 2000-level Math and CS courses. About halfway into the spring semester, my account on the CS department's crusty old Sun box was locked, and my CS professor that semester told me to report to the system administrator's office after class. When I arrived at the system administrator's office, the department's system administrator and the department head were waiting for me. The sysadmin immediately (and angrily) said that if this were anywhere but a university, he'd see that I was thrown in jail. When I asked what he was talking about, he turned to his computer, banged on the keyboard for a bit, and turned the massive CRT so I could read it. On his screen was an e-mail I had sent him the semester before asking that he change my shell from /bin/csh to /usr/local/bin/zsh. (Solaris of that vintage didn't have chsh, so I couldn't do it myself.) The sysadmin was absolutely convinced that zsh gave me "elevated system privileges", even though he was the one that changed my passwd entry and presumably was the one who compiled and installed zsh in the first place. When I argued that /usr/local/bin/zsh didn't have the suid or sgid bits and therefore gave me no more access to the system than any other shell, the department head scolded me for arguing with the (experienced, wise) sysadmin. The sysadmin changed my shell back to csh, and the department head made me sign a document stating that I wouldn't change my shell back to zsh or try to "further gain administrative access" to the system. On the drive home, I idly wondered whether going to (a different!) college full-time in the fall was really such a hot idea...
- piinbinary 14y agoNot actually zsh's fault, but that's pretty amusing (now, at least - I bet it wasn't amusing then).
- snprbob86 14y agoWith the caveat that you should always pick your battles... You should have never signed that. Even if you struck the word "further", it'd probably be seen as an admission of guilt in court.
- mgedmin 14y agoI tried, for a week, got very frustrated and switched back. The little itch that drove me crazy was command-line editing: in bash (and all readline apps) when I have command long/path/to/some/file I can press Alt-Backspace to delete 'file', or I can press Ctrl-W to delete 'long/path/to/some/file'. I tried various hacks to make zsh do the same, then gave up.
- shabble 14y agobindkey '^[^?' backward-kill-word might do the trick? (possibly '^[^h' depending on what your backspace key sends. Ctrl-v <backspace> should give you something you can copy)
- mgedmin 14y agoThis makes Alt-Backspace do the same thing as Ctrl-W, which is delete-everything-until-the-next-space. I'm missing the delete-last-segment-of-the-path function. Edit: I know I can customize the word style using $WORDCHARS, or 'autoload select-word-style'; my problem is that I'm used to having the capability to use two different word styles at once. I'm looking through the command list in zshzle(1), and I'm a bit confused about the differences between backward-delete-word and backward-kill-word. Some short experiments I did failed to notice any differences (foo/bar/baz M-x backward-delete-word deletes foo/bar/baz). There's also vi-backward-kill-word which deletes 'baz', then '/', then 'bar', then '/', then 'foo'. I want a key to delete 'baz', then 'bar/', then 'foo', and I've no idea how to get it...
- shabble 14y agoHrmm. It works as you want for me, but there may be some other config item I've set. The other alternative is to try: autoload -U select-word-type select-word-type bash which should override C-w to do what you want. I haven't looked at it enough to see if you can get both behaviours simultaneously though (and it requires a fairly recent zsh iirc)