#!/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
答案 0 :(得分:2)
除非要从根目录(或开头的cd /
)执行此操作,否则各处的/
之前都需要etc
。
答案 1 :(得分:0)
测试[ -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