Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                        
                        2年前关闭。
                                                                                            
                
        
#!/usr/bin/env bash
touch etc/skel/.abc
cat << EOF > etc/skel/.abc
test -f .profile && source .profile

    if [ -f "etc/skel/.runonce" ]
        then
        source etc/skel/.runonce
        mv "etc/skel/.runonce" "etc/skel/.ranonce"
    else
        echo ".runoce doesn't exist"

    fi

最佳答案

测试[ -f "etc/skel/.runonce" ]成功,因此在获取源时确实出现了问题。
我不希望您删除.runonce中的文件,所以我认为您在某个地方做了一个changeir。请检查您的cd命令。
注意:
当命令仅更改文件而不设置任何重要变量时,可以更好地运行文件(chmod +x etc/skel/.runonce; etc/skel/.runonce; chmod -x etc/skel/.runonce)。

编辑:
在注释OP中,脚本在runonce下编写:

我认为这是创建文件.runonce的脚本。我看到了重定向> etc/skel/.runonce,并且在.runonce文件中这很奇怪。
当使用.runonce创建cat <<EOF ... EOF但在文件中仅包含命令时,将执行文件中的命令。

编辑2:
OP建议脚本

if [[ -e /.ssh ]]
then
   cd /ssh
   git init
else
   mkdir /ssh
   cd  /ssh
   git init
fi # OP did not this fi
cd


同时具有目录/ssh/.ssh会造成混乱。我会使用/gitrepos
$HOME引用/(仅由root运行)时,可能会更改为

if [[ -d /.ssh ]]
then
   # Always make /gitrepos, ignore errors
   mkdir /gitrepos 2>/dev/null
   # Alternative: Only mkdir when /gitrepos is not a dir
   # test -d /gitrepos || mkdir /gitrepos
   # Both mkdir's will fail when you have a regular file names /gitrepos
   cd /gitrepos
   git init
   cd
else
   echo "You have no .ssh setup."
fi

10-08 07:33