【问题标题】:Move zsh + prezto configuration to dropbox将 zsh + prezto 配置移动到 Dropbox
【发布时间】:2023-03-10 11:46:01
【问题描述】:

Many people 喜欢将他们的 bash 配置文件移动到 Dropbox 文件夹,这样他们就可以拥有具有相同配置文件的多台机器(通常,对于那些拥有他们喜欢的自定义和特定配置文件的人)。我想对我的 zsh 配置文件和 Prezto 框架做同样的事情。

我在/Users/me/Dropbox/Computer Preferences/zsh/ 中创建了一个 Dropbox 文件夹(我将在此将其称为 DBFolder),我想在其中存储我的 Prezto 配置。

这是我所追求的过程:

  1. 我下载了 Prezto 并将下载中的所有文件移动到 DBFolder
  2. 我为{DBFolder}/.zprezto/runcoms/ 中的所有z* 文件创建了一个符号链接,生成的符号链接位于~/
  3. 我将这些行添加到我的 zshenv 文件中:

    export ZDOTDIR="$HOME/Dropbox/Computer Preferences/zsh" if [[ "$SHLVL" -eq 1 && -s "${ZDOTDIR:-$HOME}/.zprofile" ]]; then source "${ZDOTDIR:-$HOME}/.zprofile" path = /Users/me/bin fi

我现在可以使用 Prezto 配置启动我的 zsh 配置文件。但是,我现在的问题是我的初始登录无法加载路径:

/Users/me/.zshenv:22: permission denied: /Users/me/bin
$ whoami
#=> me

我的问题是 - 当我清楚地登录(通过 $ whoami)我的主目录中的 /Users/me/bin 时,为什么我无法访问它?

【问题讨论】:

  • 有问题的行可能是path = /Users/me/bin。正如它所写的那样,这是一个语法错误(但不应该给你“权限被拒绝”,所以我不确定你是否忠实地复制了)。无论如何,你的意思显然是PATH=/Users/me/bin:$PATH,或者更好的是PATH=$HOME/bin:$PATH
  • 如果你能回答我会很高兴!另外,您对我将其移至 Dropbox 的过程有何意见?我是不是忘记了什么傻事?我是否忽略了什么?
  • 这能解决您的问题吗?如果是这样,我会做一个答案。 “你对我的流程有什么意见吗...” 当然,这就是我的想法:由于您将所有 runco​​m 符号链接到 $HOME,您根本不需要设置 $ZDOTDIR;我个人更喜欢$ZDOTDIR 的符号链接。此外,您不需要自己获取.zprofile;它是为登录 shell 自动获取的。您在此处编写的内容也可以在非登录 shell 中获取;如果这就是你想要的,那么你做错了。非登录内容进入envrc,具体取决于交互性。
  • 此外,检查 $SHLVL 等于 1 是多余的。在$PATH(或$path,这是数组对应项)中重复相同的路径并不是真正的问题,它只是在搜索时增加了一点工作。如果您真的关心重复数据删除,只需在最后执行 typeset -gU path,这会删除您的 path 数组的重复数据。
  • 您认为这值得提出一个新问题吗?您在这里有一些非常扎实的观点,可以进行讨论,但我不确定是否应该完全成为一个问题。

标签: bash permissions zsh chown prezto


【解决方案1】:

有问题的行是

path = /Users/me/bin

存在三个问题:

  1. $path 是 Zsh 中的一个数组; $PATH 是与 POSIX 兼容的标量。
  2. = 被空格包围是语法错误; POSIX shell 中的赋值不应包含空格。
  3. $PATH 应该被扩展而不是被覆盖。

更正:

PATH=$HOME/bin:$PATH

path=($HOME/bin $path)

后者需要关闭ksharrays 选项(默认关闭)。

【讨论】:

  • 将评论转换为回答以将其从未回答队列中排除。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-11
  • 2010-10-23
  • 2020-07-30
相关资源
最近更新 更多