dockerfile中su命令切换用户激活环境,报错su: invalid option -- ‘n‘

 更新时间:2025年01月03日 10:22:05   作者:rock——you  
本文主要介绍了dockerfile中su命令切换用户激活环境以及报错su: invalid option -- ‘n‘的问题解决,具有一定的参考价值,感兴趣的可以了解一下

如果你需要通过 su 命令切换用户后激活 Conda 环境,可以按照以下步骤操作:

1. 使用 su 切换到目标用户并激活环境

在终端中,直接使用 su 切换到目标用户(普通用户),然后激活 Conda 环境:

su - username

此命令的作用:

  • 切换到 username 用户。
  • 使用 - 确保加载目标用户的环境(包括 .bashrc 或 .bash_profile)。

接着激活 Conda 环境:

conda activate <environment_name>

如果 Conda 没有添加到 PATH 环境变量,请先加载 Conda 环境:

source /home/username/miniconda3/etc/profile.d/conda.sh
conda activate <environment_name>

2. 一步切换用户并激活环境

可以将 su 和 Conda 激活命令合并为一条命令:

su - username -c "source /home/username/miniconda3/etc/profile.d/conda.sh && conda activate <environment_name> && bash"

解释:

  • su - username: 切换到目标用户。
  • -c "...": 执行后续命令。
  • source ...: 加载 Conda 环境脚本。
  • conda activate ...: 激活指定的 Conda 环境。
  • && bash: 进入用户的 shell(带激活的环境)。

3. 保持当前 Shell 激活 Conda 环境

如果你只想暂时切换用户并激活 Conda 环境,可以运行以下命令,而不进入交互式 Shell:

su - username -c "source /home/username/miniconda3/etc/profile.d/conda.sh && conda activate <environment_name> && python --version"

这种方式适合执行特定任务,例如运行 Python 脚本或执行环境中的命令。

4. 配置 su 切换后自动加载 Conda

为目标用户配置 Conda 环境的自动加载,在目标用户的 ~/.bashrc 或 ~/.bash_profile 文件中添加:

报错: su: invalid option – ‘n’ 原因为命令没有加上引号

错误 su: 无效选项 – ‘n’ 发生是因为 su 命令将 -n 参数(来自 conda run 命令)解释为自己选项,而不是您要执行的命令的选项。

要解决这个问题,您需要确保传递给 su 的命令被正确引用,以便将其视为单个参数。

这里是修正后的命令:

su - nginx -c "/home/nginx/miniconda3/bin/conda run -n crisprcasfinder perl CRISPRCasFinder.pl -in /data/website_data/data_assets/genomics_begoniaceae/private/crispr/job/CRISPRCasFinder_tzyzd2L0/MelioribacterRoseus.fasta -out CRISPRCasFinder_tzyzd2L0 -noMism"

说明:
su - nginx:切换到 nginx 用户,加载其环境。
-c:在切换用户后执行单个命令。
引号内的完整命令:确保在-c 之后的所有内容被视为一个单独的字符串,并将其作为单个命令传递给 shell。
附加说明:
确保 Conda 的 PATH 或完整路径:
如果 conda 不在 nginx 用户的 PATH 中,请确保提供 conda 的完整路径,如修正后的命令所示。
权限检查:
确保 nginx 用户有执行 Perl 脚本和访问所需文件及目录的正确权限。
激活环境(可选):如果 conda 运行命令未按预期工作,您可能需要在运行脚本之前显式激活环境。您可以按以下方式调整命令:

su - nginx -c "source /home/nginx/miniconda3/etc/profile.d/conda.sh && conda activate crisprcasfinder && perl CRISPRCasFinder.pl -in /data/website_data/data_assets/genomics_begoniaceae/private/crispr/job/CRISPRCasFinder_tzyzd2L0/MelioribacterRoseus.fasta -out CRISPRCasFinder_tzyzd2L0 -noMism"

这确保在执行 Perl 脚本之前,crisprcasfinder 环境已正确激活。

到此这篇关于dockerfile中su命令切换用户激活环境,报错su: invalid option -- ‘n‘的文章就介绍到这了,更多相关dockerfile su命令内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 阿里云镜像安装docker报错的问题及解决方案

    阿里云镜像安装docker报错的问题及解决方案

    这篇文章主要介绍了阿里云镜像安装docker报错的问题及解决方案,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • docker打包node项目的过程讲解

    docker打包node项目的过程讲解

    今天小编就为大家分享一篇关于docker打包node项目的过程讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • Linux系统Docker 部署 ASP.NET Core应用的流程分析

    Linux系统Docker 部署 ASP.NET Core应用的流程分析

    这篇文章主要介绍了Linux系统Docker 部署 ASP.NET Core应用的流程分析,在操作过程中小编遇到很多问题,下面把我的经验及处理方法分享到脚本之家平台,需要的朋友参考下吧
    2021-06-06
  • Docker部署搭建WebDav服务的详细过程

    Docker部署搭建WebDav服务的详细过程

    这篇文章主要介绍了Docker部署WebDav服务,小编综合了各种共享方式后最终选择了使用 WebDav 来共享文件,下面小编把搭建部署过程分享给大家,需要的朋友可以参考下
    2022-08-08
  • docker安装nginx之后无法访问的解决

    docker安装nginx之后无法访问的解决

    这篇文章主要介绍了docker安装nginx之后无法访问的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Dockerfile如何使用alpine系统制作haproxy镜像

    Dockerfile如何使用alpine系统制作haproxy镜像

    这篇文章主要介绍了Dockerfile如何使用alpine系统制作haproxy镜像问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • docker下安装Nginx的方法

    docker下安装Nginx的方法

    这篇文章主要介绍了docker下安装Nginx的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-07-07
  • 从入门到实战全面解析Docker镜像常用命令

    从入门到实战全面解析Docker镜像常用命令

    Docker 作为容器化技术的标杆工具,其镜像管理能力是实现高效 CI/CD 流程的核心,本文将为大家带来Docker 镜像常用命令的全方位解析,希望对大家有所帮助
    2025-11-11
  • docker容器中crontab无法正常运行解决方案

    docker容器中crontab无法正常运行解决方案

    相信很多人看完docker容器, 需要加crontab, 加完却发现不能执行,什么原因造成的呢?下面小编给大家分享docker容器中crontab无法正常运行的解决方案,需要的朋友参考下吧
    2017-01-01
  • Docker 如何分配宿主机网段 IP

    Docker 如何分配宿主机网段 IP

    本篇文章主要介绍了Docker 如何分配宿主机网段 IP,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05

最新评论