我正在尝试尽可能多地使用 Homebrew 管理我的 OSX 包。我已经使用 Homebrew 安装了 Fish Shell 和 NVM,但无法让 Fish 识别我的 NVM 安装。使用 Bash 运行时,NVM 命令运行良好,可能是因为当您使用 Homebrew 安装 NVM 时,它让我在我的 .bashrc 文件中添加了一些额外的行。
使用 Homebrew 安装 NVM 后,它说:
Add NVM's working directory to your $HOME path (if it doesn't exist):
mkdir ~/.nvm
Add the following to $HOME/.bashrc, $HOME/.zshrc, or your shell's
equivalent configuration file:
export NVM_DIR=~/.nvm
source $(brew --prefix nvm)/nvm.sh
Run Code Online (Sandbox Code Playgroud)
此外,Homebrew 安装脚本似乎已将此行添加到我的 ~/.profile
source /usr/local/opt/nvm/nvm.sh
Run Code Online (Sandbox Code Playgroud)
我希望可以对 Fish 使用相同的技术来访问 NVM 安装,但我似乎无法让它工作。
我发现了这种技术:https : //github.com/passcod/nvm-fish-wrapper 但我宁愿不必包装 NVM。
任何人都可以帮忙吗?
我想使用fish shell的缩写功能,特别是对于已知的bash变量!!或常见git命令的别名。我知道可以像以下代码段一样添加缩写:
abbr -a gco git checkout
我也知道此设置保存在位于 的文件中.config/fish/fishd.host,但该文件还表示不应编辑它,因为更改可能会丢失(因为该文件是自动生成的)。
所以我的问题是如何在配置文件中添加这个缩写,因为我想把我的点文件放在一个 git 存储库中。如果我在单独的机器上使用这些点文件,我不想abbr再次执行所有这些命令。
我在我的 Mac 上使用 iTerm 并且我有一个我一直很舒服地使用的 .bash_profile。我最近了解了 fish bash 并将其安装在我的 Mac 上,突然间我的 .bash_profile 没有来源。关于为什么我看不到它的任何想法?
我如何指示我的 iTerm 和 fish 获取我的 .bach_profile ,就像以前没有鱼一样?
在尝试设置我的新鱼壳提示时,我最终测试了获取分支名称的方法,并测试了我是否在 git 存储库上。我发现(1) git rev-parse --abbrev-ref HEAD , (2) git symbolic-ref HEAD | sed 's/refs\/heads\///'和(3) git describe --contains --all HEAD可以很好地解决问题。
我很好奇,因为我喜欢(1)的简单性,但是在一个新的和未受影响的(只是git inited)存储库上,它给了我一个“致命的:”错误,而(2)按预期工作,也就是说,给了我一个默认主作为输出。问题是,即使出现“致命:”错误,返回码也是 0。这是预期的行为吗?
为了测试我是否在 git 存储库中,我最终只是测试当前目录是否有一个“.git”文件夹:test -d ".git". 基本的解决方案,但它有效,而且似乎比使用任何 git 命令都要快。
所以,我的问题是:
^ /dev/null(对于那些不知道的人,^与 相同2>),我不会得到错误,但它会说HEAD而不是 master,但如果我cat .git/HEAD,我得到:ref: refs/heads/master。它真的应该说什么?随着master我只是无知和挑剔,因为它应该不是说HEAD?我的意思是在刚刚git …我要将我的 root 的默认 shell 从 bash 更改为 fish。据我所知,fish 不是 POSIX 标准外壳。另一方面,可能系统中的内核或其他东西与 POSIX 标准有关系,因此不建议将 root 的默认 shell 设置为非 POSIX 的 shell,因为这可能会导致操作系统的某些部分出现问题。我看到有人在某些主题上建议其他人不要将 root 用户的默认 shell 设置为非 POSIX 的 shell!这样对吗?
我是否应该将 root 的默认 shell 更改为非 POSIX 的 shell?(如果你能解释清楚,我会很高兴,我是类 Unix 世界的新手!)
在我的 Mac 和 Ubuntu 上,当我在 Fish Shell 中输入“la”时,我收到的输出与“ls -la”的输出相同。我想我可能已经将它定义为一个函数。但是,我找不到“la”被定义为别名、缩写或函数。
我检查了 .config/fish/functions、fish.prompt.fish、config.fish、which 以及 Fish 文档和命令。
我错过了什么?关于“la”可以在哪里定义有什么想法吗?
我想在鱼提示符中查看当前时间,以便我始终可以看到例如何时启动最后一个命令。我不想安装扩展。
当我开始时fish,我希望它打印它正在读取配置、配置文件和自定义的每个位置,以便我可以:
这可能吗?如果可能的话,如何实现?
如何在 Fish shell 中进行 bash 样式的字符串操作?
具体来说,在 bash
read branch < ".git/HEAD"
branch=${branch#ref: refs/heads/}
Run Code Online (Sandbox Code Playgroud)
将分支名称放在$branch变量中。
我如何在鱼壳中做同样的事情?
我浏览了鱼的文档,但没有找到任何东西。
我的提示非常冗长 - 这在大多数情况下都很好 - 但现在我想暂时切换它,因为我想制作终端的屏幕截图。为此,我不想深入研究配置文件,而是将提示快速设置为诸如“>”之类的简短内容,然后恢复它。
鱼壳可以吗?