可以一个系统 iterm 一个 shell 比如 zsh,terminal 另一个 shell 比如 fish 吗?

2014-04-11 14:21:28 +08:00
 zeroday
6323 次点击
所在节点    问与答
19 条回复
bingwenshi
2014-04-11 14:45:03 +08:00
不太了解你的场景是什么, 这个配置只能绑定在用户配置里, 只能一个吧(没看过具体源码), 不如开两个用户 ?
yukirock
2014-04-11 14:46:04 +08:00
zsh 下執行 fish 可以臨時切換過去,<c-d> 退出即返回。
長期切換的話,$SHELL 應該不能匹配兩個不同的 sh 吧?
flyee
2014-04-11 14:58:57 +08:00
猜测可以通过检查$TERM_PROGRAM实现。未测试。
zeroday
2014-04-11 16:47:49 +08:00
@bingwenshi 场景是这样的:平时只做rails相关的东西,最多就是brew git等,用bash的东西比较少,所以shell是fish shell,而且也觉得fish shell自动完成提示比 zsh 好看, function 和 if 写起来就和 lua 差不多,使用他日常使用更得心应手。但fish非标准shell,和sh不兼容,vim有点问题,也不打算支持heredoc。所以就想,能否一个终端一个shell,方便切换。
zeroday
2014-04-11 16:48:51 +08:00
@yukirock 我是fish作为日常使用的,能否fish下直接临时切换到zsh或bash?
nicai000
2014-04-11 17:01:27 +08:00
@zeroday zsh回车 or bash回车
lululau
2014-04-11 17:05:03 +08:00
iTerm2 可以每个 Profile 指定不同的 shell
yukirock
2014-04-11 17:13:08 +08:00
@zeroday chsh 命令可以更改默認 shell。
little_cup
2014-04-11 17:21:18 +08:00
@zeroday 握手,几乎一样的习惯,我的解决方案是这样的,系统默认shell设置为bash,然后在.bash_profile末尾添加:

if [ "$1" == "" ] && [[ -z $(ps aux |grep wireshark |grep -v grep) ]]; then
/usr/local/bin/fish
echo Goodby!
exit 0

这样在MacVim就可以正常使用。缺点是x11的程序(幸好我只用得到wireshark)启动会有点问题,必须单独如上指定。
zeroday
2014-04-11 18:26:01 +08:00
@yukirock `chsh -s /usr/local/bin/zsh` or `chsh -s /bin/bash`,然后就要输入密码,因为我的密码比较复杂,感觉这样来回切换实在有点繁琐。
spritevan
2014-04-11 18:36:51 +08:00
terminal
---

preferences -> startup
shells open with: command -> path_of_fish


iterm2
---

preferences -> profiles -> general
command -> path_of_zsh
zeroday
2014-04-11 18:38:00 +08:00
@little_cup 握手,同道中人,不过我没明白默认shell设置成bash,那不就是bash了吗?fish不是没有使用了?
zeroday
2014-04-11 18:40:56 +08:00
@spritevan 太棒了,这真是个好方法,非常感谢。
zeroday
2014-04-11 18:42:44 +08:00
@nicai000 谢谢你了,同样是个办法。
little_cup
2014-04-11 21:45:38 +08:00
@zeroday
把那段添加后,终端会在窗口输入的状态自动切换成fish,而在执行shell脚本时保持bash。
以前我也是 @spritevan 那样设置的,可是会在远程ssh登回来的时候露马脚,而且applescript执行tell application "Terminal" xxxx也无法正确传递。
zeroday
2014-04-11 21:57:53 +08:00
@little_cup 听起来真是一个巧妙的设置,可是在我的系统里不生效,提示“-bash: /Users/MasterMac/.bash_profile: line 24: syntax error: unexpected end of file“
这是我的.bash_profile
########################This is my .bash_profile#############################


#for color
export CLICOLOR=1

export PS1='\n\[\e[0;30m\]┌─\[\e[0m\]\[\e[01;30m\]\u@\h\[\e[00m\]:\[\e[01;34m\]\w\[\e[00m\]\n\[\e[0;30m\]└───\[\e[0m\]\$ \[\e[00;33m\]$(__git_ps1 "(%s)")\[\e[00m\] '


printf "\n"

SaySomething=$(fortune -a -s | sed -E "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g")
cowsay $SaySomething | lolcat -f

printf "\n"

# Load RVM into a shell session *as a function*
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

if [ "$1" == "" ] && [[ -z $(ps aux |grep wireshark |grep -v grep) ]]; then
/usr/local/bin/fish
echo Goodby!
exit 0
little_cup
2014-04-11 22:03:18 +08:00
@zeroday …………sorry我复制过来掉了最后一行,在exit 0那行之后添加一行fi即可。
zeroday
2014-04-11 22:15:00 +08:00
@little_cup 赞啊,fish和sh竟然兼容了,MacVim也OK了。
little_cup
2014-04-11 22:23:54 +08:00
@zeroday 不客气~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/108131

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX