小编hus*_*sik的帖子

如何使 /etc/profile.d 中的脚本在同一目录中的所有其他脚本之后运行?

我正在 Ubuntu 上为需要多个部分的应用程序编写安装程序脚本,例如

  • 安装特定的g++版本,将脚本放入profile.d中,重新启动
  • 为某些硬件安装驱动程序,删除旧脚本,将新脚本放入 profile.d 中,重新启动
  • 设置环境变量,从 profile.d 中删除脚本,添加新脚本,编译源代码(c++),
  • 设置环境变量脚本 int profile.d

在安装的每个部分,我都会将脚本复制到 /etc/profile.d目录,以便在从 ssh 登录时运行。但我不知道该脚本是否在同一目录中的所有其他脚本之后运行(例如,驱动程序可能已将自己的脚本放在那里,我的脚本可能需要工作)。

如何确保 profile.d 中的脚本作为最后一步运行?是关于文件名或创建日期还是其他什么?

shell-script profile

5
推荐指数
1
解决办法
8912
查看次数

Cp 命令在不同的 Ubuntu 版本上进行额外的复制以进行文件夹克隆

编辑:找到一个重复的解决方案: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)

ubuntu cp

3
推荐指数
1
解决办法
709
查看次数

标签 统计

cp ×1

profile ×1

shell-script ×1

ubuntu ×1