bash - 无法使用 Bash Shell 脚本在 Ubuntu 上创建目录

标签 bash ubuntu scripting vagrant

我正在尝试运行这个 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/

相关文章:

ubuntu - GitLab LDAP 身份验证问题(SSL_connect、用户身份验证)

linux shell 补丁命令

python - Mac OS X 10.10 合并错误

git - 如何以自定义漂亮的日志格式在每个新行上附加选项卡?

linux - bash 中的 Windows 兼容密码

Docker 容器以状态码 255 退出

docker - WSL1、Docker Desktop、卷挂载始终为空

bash - 列出 fish/bash shell 中所有可用的别名

powershell - 如何从 Switch 语句中退出 While 循环

linux - 在 su 命令期间调用时如何隐藏密码?