我正在 Ubuntu 上为需要多个部分的应用程序编写安装程序脚本,例如
在安装的每个部分,我都会将脚本复制到 /etc/profile.d
目录,以便在从 ssh 登录时运行。但我不知道该脚本是否在同一目录中的所有其他脚本之后运行(例如,驱动程序可能已将自己的脚本放在那里,我的脚本可能需要工作)。
如何确保 profile.d 中的脚本作为最后一步运行?是关于文件名或创建日期还是其他什么?
编辑:找到一个重复的解决方案:rsync -a --delete /sf/ask/1658872841/里面
有效的新脚本:
#!/bin/bash
numCopy=$1
shift
cmdline="${@}"
echo "prepare folders"
for ((i=1;i<=$numCopy;i++));
do
(rsync -a --delete $cmdline/ $cmdline$i/; ) &
(echo "preparing folder clone: $i") &
done
wait
Run Code Online (Sandbox Code Playgroud)
对于多线程文件夹复制,
#!/bin/bash
numCopy=$1
shift
cmdline="${@}"
echo "prepare folders"
for ((i=1;i<=$numCopy;i++));
do
(cp -rf $cmdline $cmdline$i; ) &
(echo "preparing folder clone: $i") &
done
wait
Run Code Online (Sandbox Code Playgroud)
这个脚本将一个源文件夹复制$cmdline
到(不存在的)目的地$cmdline$i
,在我的Ubuntu 16.04 的电脑上没有问题,但是当我在带有Ubuntu 18.04的云计算机上运行相同的脚本时,它会这样做:
destination/source
我不想要这个)这不会破坏任何程序,但我不想消耗不必要的云空间。
为什么某些不同版本的 Ubuntu 会在目标文件夹中添加辅助副本?
我正在使用这个脚本作为
./myscript.sh 2 …
Run Code Online (Sandbox Code Playgroud)