【问题标题】:Cannot Create Directories On Ubuntu With Bash Shell Script无法使用 Bash Shell 脚本在 Ubuntu 上创建目录
【发布时间】: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


【解决方案1】:

您的脚本可以替换为

mkdir -p "$HOME/.vim"/{ftdetect,indent,syntax}

至于没有出现的目录...您在哪里寻找它们?

以 root 身份运行会在 root 的主目录 /root/ 中创建它们,而不是在用户的主目录 /home/username 中创建它们。如有疑问,请使用绝对路径名(之后根据需要使用chown)。

【讨论】:

    猜你喜欢
    • 2014-05-14
    • 2021-03-05
    • 1970-01-01
    • 2015-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-20
    • 2017-12-03
    相关资源
    最近更新 更多