我正在尝试运行这个 bash shell 脚本来为 Ubuntu 13.04 上的 vim 语法高亮创建目录(通过 Windows 7 上的 Vagrant 1.4.1)。
#!/usr/bin/env bash
basevim="$HOME/.vim"
ftdetect="${basevim}/ftdetect"
indent="${basevim}/indent"
syntax="${basevim}/syntax"
echo "Setting up VIM for syntax highlighting"
#Create directories for vim syntax highlighting
if [ ! -d "$basevim" ]; then
echo "Adding VIM syntax highlighting dirs"
mkdir "$basevim"
mkdir "$ftdetect"
mkdir "$indent"
mkdir "$syntax"
else
if [ ! -d "$ftdetect" ]; then
mkdir "$ftdetect"
fi
if [ ! -d "$indent" ]; then
mkdir "$indent"
fi
if [ ! -d "$syntax" ]; then
mkdir "$syntax"
fi
fi
据我所知,这是作为 Vagrant 的 provision.sh 脚本执行的,它应该以 root 身份运行。我可以看到 echo'd 消息,所以它正在使用第一个分支。但是对于我的生活,我似乎无法让它发挥作用;没有投诉,但没有创建目录。如果我在交互式提示中设置这些变量,我需要执行
sudo mkdir ftdetect
(等)来创建目录。奇怪的是,我不需要 sudo 来创建 .vim 目录——至少我记得是这样。我试过了
if [ ! -d "${basevim}" ]; then
但这并没有做任何事情。我也试过
basevim="{$HOME}/.vim"
——也没有骰子。对我可能遗漏的有什么想法吗?正如我所说,据我所知,没有必要在 Vagrant 上的配置脚本上使用 sudo。我可以告诉脚本正在运行,因为那些回显的消息正在输出。
最佳答案
您的脚本可以替换为
mkdir -p "$HOME/.vim"/{ftdetect,indent,syntax}
至于没有出现的目录......你在哪里寻找它们?
以 root 身份运行它会在 root 的主目录
/root/
中创建它们。 ,而不是在用户的主目录 /home/username
.如有疑问,请使用绝对路径名(之后根据需要使用 chown
)。
关于bash - 无法使用 Bash Shell 脚本在 Ubuntu 上创建目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20908729/