【问题标题】:Does `Fish` change the order of $PATH? How to avoid that`Fish` 会改变 $PATH 的顺序吗?如何避免这种情况
【发布时间】:2019-10-30 22:38:28
【问题描述】:
fish --version
> fish, version 3.0.2

uname -a
> Darwin Jerrys-MacBook.local 18.6.0 Darwin Kernel Version 18.6.0: Thu Apr 25 23:16:27 PDT 2019; root:xnu-4903.261.4~2/RELEASE_X86_64 x86_64

echo $TERM
> xterm-256color

我在 bash 和 fish shell 中比较了我的 $PATH,rvm 的顺序发生了变化,导致 which pod 变得不同(我使用 rvm 管理 ruby)。

我怎样才能使它们具有相同的顺序?

顺便说一句,

  • 我已将所有设置包含在.bashrc 中,并通过source ~/.bashrc.bash_profile 中加载它,并在.prfile 中注明
  • 我在~/.config/fish/config.fish 中什么都没有

x,~,=,> 的开头字符只是我添加了标记以便于比较。

----- echo $PATH

=:~/.rvm/gems/ruby-2.2.9/bin
=:~/.rvm/gems/ruby-2.2.9@global/bin
=:~/.rvm/rubies/ruby-2.2.9/bin
X=:/opt/local/bin
X=:/opt/local/sbin
=:~/.nvm/versions/node/v8.11.3/bin
~:/usr/local/bin
~:/usr/bin
~:/bin
~:/usr/sbin
~:/sbin
>:/usr/local/share/dotnet
>:/opt/X11/bin
>:/Library/Frameworks/Mono.framework/Versions/Current/Commands
X-:~/.rvm/bin
X-:~/.local/bin
X-:/usr/local/Cellar/aria2/1.33.1/bin
X-:~/Documents/code/flutter/sdk/flutter/bin
X-:~/Documents/code/flutter/sdk/flutter/bin/cache/dart-sdk/bin
X-:~/Documents/code/flutter/sdk/flutter/.pub-cache/bin
------ fish & echo $PATH

~/usr/local/bin
~/usr/bin
~/bin
~/usr/sbin
~/sbin
>/opt/X11/bin
>/usr/local/share/dotnet
>/Library/Frameworks/Mono.framework/Versions/Current/Commands
=~/.rvm/gems/ruby-2.2.9/bin
=~/.rvm/gems/ruby-2.2.9@global/bin
=~/.rvm/rubies/ruby-2.2.9/bin
X=/opt/local/bin
X=/opt/local/sbin
=~/.nvm/versions/node/v8.11.3/bin
X-~/.rvm/bin
X-~/.local/bin
X-/usr/local/Cellar/aria2/1.33.1/bin
X-~/Documents/code/flutter/sdk/flutter/bin
X-~/Documents/code/flutter/sdk/flutter/bin/cache/dart-sdk/bin
X-~/Documents/code/flutter/sdk/flutter/.pub-cache/bin

【问题讨论】:

标签: macos shell path rvm fish


【解决方案1】:

这是来自this PR 的简单解决方法,

# Download patched config
curl -O https://raw.githubusercontent.com/fish-shell/fish-shell/e18354bc6ef937e2e663fc098cc51a2546d4d2d0/share/config.fish

# Install config
mv config.fish /usr/local/share/fish/

【讨论】:

  • 我已经从fishshell.com重新下载了安装程序fish-3.0.2.pkg,并按照你的步骤,然后输入fish会报错/usr/local/share/fish/config.fish (line 239): Unknown builtin '' builtin $jobbltn (__fish_expand_pid_args $argv),我猜是因为@987654328中的另一个文件@不匹配。
  • 嗯,那一定是不相关的变化;这个差异显示了与 PR 的实际差异,github.com/fish-shell/fish-shell/pull/5956/files
【解决方案2】:

这里是我如何解决的(仅在我的 zsh 上使用 fish 作为交互):

.zshrc:

export ZSHPATH="$PATH"

fish

.config/fish/config.fish

set PATH $ZSHPATH $PATH

【讨论】:

  • 你能提供你使用的版本吗?因为我简单地使用回旧版本,并且问题对我来说已经消失了。
【解决方案3】:

为简单起见,在Mac上下载并安装没有此错误的版本fish-2.7.1.pkg

根据代码提交,下一个版本fish-3.1.0可能会修复这个bug。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-14
    • 1970-01-01
    相关资源
    最近更新 更多