【发布时间】:2023-03-10 11:46:01
【问题描述】:
Many people 喜欢将他们的 bash 配置文件移动到 Dropbox 文件夹,这样他们就可以拥有具有相同配置文件的多台机器(通常,对于那些拥有他们喜欢的自定义和特定配置文件的人)。我想对我的 zsh 配置文件和 Prezto 框架做同样的事情。
我在/Users/me/Dropbox/Computer Preferences/zsh/ 中创建了一个 Dropbox 文件夹(我将在此将其称为 DBFolder),我想在其中存储我的 Prezto 配置。
这是我所追求的过程:
- 我下载了 Prezto 并将下载中的所有文件移动到 DBFolder。
- 我为
{DBFolder}/.zprezto/runcoms/中的所有z* 文件创建了一个符号链接,生成的符号链接位于~/。 -
我将这些行添加到我的 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 的过程有何意见?我是不是忘记了什么傻事?我是否忽略了什么?
-
这能解决您的问题吗?如果是这样,我会做一个答案。 “你对我的流程有什么意见吗...” 当然,这就是我的想法:由于您将所有 runcom 符号链接到
$HOME,您根本不需要设置$ZDOTDIR;我个人更喜欢$ZDOTDIR的符号链接。此外,您不需要自己获取.zprofile;它是为登录 shell 自动获取的。您在此处编写的内容也可以在非登录 shell 中获取;如果这就是你想要的,那么你做错了。非登录内容进入env或rc,具体取决于交互性。 -
此外,检查
$SHLVL等于 1 是多余的。在$PATH(或$path,这是数组对应项)中重复相同的路径并不是真正的问题,它只是在搜索时增加了一点工作。如果您真的关心重复数据删除,只需在最后执行typeset -gU path,这会删除您的path数组的重复数据。 -
您认为这值得提出一个新问题吗?您在这里有一些非常扎实的观点,可以进行讨论,但我不确定是否应该完全成为一个问题。
标签: bash permissions zsh chown prezto