首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用unshare并仍在执行原始函数

使用unshare并仍在执行原始函数
EN

Stack Overflow用户
提问于 2016-02-15 13:45:52
回答 1查看 295关注 0票数 0

我正在尝试根据本页上的说明概括并生成一个shell脚本,特别是在这里:https://nixos.org/wiki/How_to_add_files_to_the_nix-store#Large_files由于Nix无法处理4.5 GB的文件,我出现内存不足错误。

因此...

我当前的代码是:

代码语言:javascript
复制
#!/usr/bin/env bash

function do_store {
    if [ "$#" -lt 1 ]; then
      printf "Must provide the Xcode_dmg\n"
      exit 1
    fi
    unshare -m bash

    local
    sdk="$1"
    name="$(basename $sdk)"
    # Hack since the openssl sha and nix-store is super slow
    hash="a08d555c4f3fd905c53ee67720d9e6ade01e1b0b"
    store_path="$(nix-store --print-fixed-path sha1 $hash $name)"
    mount -o remount,rw /nix/store
    printf "$storepath\n\n0\n" | nix-store --register-validity --reregister
    exit
    # printf "name: %s, hash: %s, store_path: %s\n" "$name" "$hash" "$store_path"
}

do_store "$@"

使用sudo -HE调用...with的想法

问题是unshare会立即启动一个新的bash shell,并且“父”代码停止运行,这对我来说当然不好,因为我需要这个逻辑来完成。此外,我还需要保留当前用户的环境,因为我需要nix-store等的路径仍然有效,因此需要使用sudo -HE

EN

回答 1

Stack Overflow用户

发布于 2016-03-05 19:42:55

试着用一个简单的:

代码语言:javascript
复制
unshare -fm

它派生一个新的子进程(这样父进程就可以继续执行),并且在没有指定新bash的情况下继承环境变量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35402254

复制
相关文章

相似问题

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