首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从启动新shell的命令中调用脚本

从启动新shell的命令中调用脚本
EN

Unix & Linux用户
提问于 2022-03-11 20:41:08
回答 2查看 584关注 0票数 1

使用Ubuntu20.04。我可以通过手动调用创建shell的命令来禁用覆盖文件系统,然后从这个新shell中调用第二个脚本。然而,我希望能够脚本它,以便我可以自动更新一台pc。

下面是我运行到diable OverlayFS的两个脚本:

脚本1:打开一个允许永久更改的shell (overlayroot-chroot创建一个新的shell)

代码语言:javascript
复制
#!/bin/bash
# Enter chroot mode, which allows one to make permanent changes to / parition

echo "Enter mood to make permanent changes"
echo "Press CTRL+D to exit when finished editing"
sudo overlayroot-chroot

脚本2:进行更改

代码语言:javascript
复制
#!/bin/bash
# Disable OverlayFS

echo "Disable overlayfs (read only file system at /)"
FILE=/etc/overlayroot.conf
cat << EOF | sudo tee $FILE
overlayroot_cfgdisk="disabled"
overlayroot=""
EOF

echo "COMPLETE."
echo "Press CTRL+D to exit chroot mode."
echo "Then 'sudo reboot' for the changes to take effect."

脚本2需要在脚本1创建的shell中运行。

但是,如何通过命令来运行新创建的shell呢?

EN

回答 2

Unix & Linux用户

发布于 2022-03-12 10:00:11

那不管用。每个脚本都用自己的PID生成一个新的shell。

我将在script2.sh中创建bash函数,在script1中创建源代码script1。

从script2调用script1中的函数。

script1

代码语言:javascript
复制
source ./script2.sh
# call the function
do_stuff

script2

代码语言:javascript
复制
do_stuff() {
  echo "hello world"
}
票数 1
EN

Unix & Linux用户

发布于 2022-03-12 10:07:54

通过简单地回显命令以遇到overlayroot-chroot (我以前还没有成功)解决了这个问题:

代码语言:javascript
复制
echo "source /home/path/to/overlayfs/disable.sh" | sudo overlayroot-chroot
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/694056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档