【问题标题】:Set $path fail (win10 subsystem linux, ubuntu, fish shell, brew)设置 $path 失败(win10 子系统 linux、ubuntu、fish shell、brew)
【发布时间】:2020-07-02 08:58:51
【问题描述】:

环境

  • 操作系统:适用于 Linux、Ubuntu 18.04 的 Windows 子系统
  • 贝壳:鱼
  • 工具包管理:brew (homebrew/linuxbrew)
    • fish 已安装
      • fish 已设置为默认 shell
    • brew 已安装
      • brew 环境设置为official site
      • php 已经安装了 brew
      • composer 已安装 brew

目标

我想将 PHP 与 brew 已安装但失败的“php”命令一起使用。

我做了什么

  • 我尝试自己设置环境

    • 在当前 shell 中成功,但在重新启动 shell 时失败
    # in bash I tried these
    PATH=${PATH}:/home/linuxbrew/.linuxbrew/bin/
    export PATH=${PATH}:/home/linuxbrew/.linuxbrew/bin/
    
    # in fish bash I tried these
    set PATH $PATH /home/linuxbrew/.linuxbrew/bin/     <-update: updated
    export PATH $PATH:/home/linuxbrew/.linuxbrew/bin/  <-update: wrong
    
    • 在 bash 中成功但在 fish 中失败
      • 在用户目录的.bashrc文件中添加上述命令 (.bashrc 似乎只在 bash 时运行)
    • 以下应该成功但失败
      • sudo -H vi /etc/environment
      • 在里面添加/home/linuxbrew/.linuxbrew/bin/

【问题讨论】:

  • 鱼还是 bash?决定
  • 我只想默认鱼
  • 我在这里写 bash 只是因为我发现 .bashrc 只为 bash 而不是鱼运行,或者我可能只是将其用作解决方案
  • 让我现在试试
  • 那是因为没有“.fishrc”这样的东西。该文件名为“config.fish”,位于 ~/.config/fish 中。

标签: windows-subsystem-for-linux fish


【解决方案1】:

如果你想让命令在启动 fish 时运行,你需要将它们放入 ~/.config/fish/ 中名为“config.fish”的文件中。顾名思义,Bashrc 是 bash 特有的。

“export”也用于标记一个“exporting”的变量,这意味着将它传递给shell启动的外部命令。 $PATH 通常从 shell 的开头继承,这意味着它无论如何都会被导出,所以你的 export 行是无用的。

您的 fish 命令也需要稍作调整:

set PATH $PATH /home/linuxbrew/.linuxbrew/bin/

fish 中的$PATH 是一个列表,因此需要将其设置为多个参数,而不是一个字符串。在 fish 3.0(在 Ubuntu 18.04 之后发布)中,它被调整为自动拆分为“:”,但即使在这种情况下,你也必须引用它,否则它会产生令人惊讶的结果。

【讨论】:

  • 是否已弃用fish_user_paths?
  • 不是。我只是不想让这个解释复杂化。
猜你喜欢
  • 2013-12-03
  • 2019-06-27
  • 1970-01-01
  • 2015-10-26
  • 1970-01-01
  • 2018-02-28
  • 1970-01-01
  • 1970-01-01
  • 2019-09-06
相关资源
最近更新 更多