【发布时间】:2014-01-21 10:08:46
【问题描述】:
我正在尝试运行这个 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。我可以告诉脚本正在运行,因为那些回显的消息正在输出。
【问题讨论】:
-
您能否在靠近脚本顶部的某处添加“whoami”以将当前用户名打印到日志中?这样您就可以验证它是否以 root 身份运行。
-
-p切换到mkdir消除了在创建目录之前检查目录是否存在的需要。
标签: bash ubuntu scripting vagrant