首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

将/bin/bash -l -c与串联命令一起使用不会传递环境变量

将/bin/bash -l -c与串联命令一起使用不会传递环境变量。

/bin/bash -l -c是一个命令行参数,用于在Linux系统中执行一个命令。它的作用是以登录shell的方式执行命令,并且会加载登录shell的配置文件,如~/.bash_profile或~/.bashrc。

串联命令是指将多个命令通过特定的符号连接起来依次执行,常见的符号有分号(;), 逻辑与(&&), 逻辑或(||)等。

当/bin/bash -l -c与串联命令一起使用时,由于每个串联的命令都会被解析为一个独立的子进程,所以环境变量不会被传递给后续的命令。

这意味着,如果在第一个命令中设置了某个环境变量,后续的命令将无法访问到该环境变量。这可能会导致后续命令无法正常执行,或者无法获取到正确的环境配置。

为了解决这个问题,可以使用其他方式来传递环境变量,例如使用export命令将环境变量导出到当前shell的环境中,或者使用source命令在当前shell中执行脚本文件,以确保环境变量的正确传递。

总结起来,/bin/bash -l -c与串联命令一起使用不会传递环境变量,需要使用其他方式来确保环境变量的正确传递。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

进程程序替换

\n"); // 执行ls -l命令 execl("/bin/ls", "ls", "-l", NULL); // 只有替换失败才会执行到这里 perror...函数命名规律 l (list):参数以NULL结尾的列表形式传递 v (vector):参数通过字符指针数组传递 p (PATH):自动搜索PATH环境变量 e (environment):可自定义环境变量...execl("/bin/ls", "ls", "-l", "-a", NULL); 必须指定完整路径 参数逐个列出,最后必须跟NULL,表示参数传递完成 2. execlp:智能路径搜索 int execlp...", "-c", "echo $HOME", NULL}; execve("/bin/bash", args, new_env); 使用man 2查询,说明是系统级函数 其他的exec函数是通过语言封装的系统调用...", "ls", "-l"); // 会导致不可预测行为 // 正确写法 execl("/bin/ls", "ls", "-l", NULL); 环境变量继承规则 带e的函数完全替换环境变量 其他函数继承原进程环境变量

3000

学习笔记0402----shell基础知识

8.4 uniq 去重 8.5 tee 重定向,并且把文件内容打印到屏幕上 8.6 tr 替换字符 8.7 split 将一个大文件分割成很多个小文件 9.特殊符号 1.环境变量 2.source与exec...,并从/etc/profile.d目录的配置文件中搜集shell的设置,使用该文件配置的环境变量将应用于登录到系统的每一个用户。...--version 显示版本信息 8.3 wc 统计 参数 -c 统计字节数。 -l 统计行数。 -m 统计字符数。这个标志不能与 -c 标志一起使用。 -w 统计字数。...8.7 split 将一个大文件分割成很多个小文件 参数 -b:值为每一输出档案的大小,单位为 byte。 -C:每一输出档中,单行的最大 byte 数。 -d:使用数字作为后缀。...2.sh filename 重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell,除非使用export

73650
  • Shell编程详解

    shell程序 C Shell (/bin/csh):是Bill Joy编写的一个具有面向对象设计理念的shell程序,它采用与C语言相似的语法和控制结构。...C Shell中的命令提示符为%号 TENEX C Shell(/bin/tcsh):是C Shell的增强版,它对历史命令和别名等方面进行了改进,同时也支持C Shell中的所有特性。.../bin/bash echo "当前用户是:$USER" echo "主目录是:$HOME" 3.2、临时设置环境变量 临时设置的环境变量只在当前会话中有效,会话结束后失效 使用export设置环境变量.../bin/bash for l in 1 2 3 4 5 do if [ $l -eq 3 ] then continue fi echo "The value of l is...使用当前Shell默认的解释器 脚本在当前Shell环境中运行,不会启动新的子Shell 脚本中的变量和修改会直接影响当前Shell环境 无需给脚本赋执行权限,只要有读权限即可 4、将脚本放入系统PATH

    14510

    Linux进程控制【进程程序替换】

    ,就能实现各种指令 进程程序替换图解 Linux 中的指令都是用 C语言 写的可执行程序,所以可以进行替换 bash 运行后,输入 指令 本质上就是在进行程序替换 关于简易版 bash 的实现方法,...程序能继承 bash 中的环境变量表了 在 bash 下执行程序,等价于在 bash 下替换子进程为指定程序,并将 bash 中的环境变量表 environ 传递给指定程序使用 其他没有带 e 的替换函数...,默认传递当前程序中的环境变量表 2.6、函数6 execve execve 是系统真正提供的程序替换函数,其他替换函数都是在调用 execve 比如 execl 相当于将链式信息转化为 argv 表...因为不论什么语言最终都需要调用系统级接口,比如文件流操作中的 open、close、write 等函数,无论什么语言的文件流操作函数都需要调用它们 ---- 2.7、函数7 execvpe 对 execvp 的再一层封装,使用方法与...l 即 list,列表传递 v 为 vector,顺序传递 p 表示 PATH,根据程序名自动在 PATH 中查找 e 则是 environ,是否手动传递环境变量表 3.2、替换现象 子进程程序替换后

    25920

    【linux命令讲解大全】176.深入了解shutdown和sudo命令的用法和设置

    语法 sudo(选项)(参数) 选项 -b:在后台执行指令; -E:继承当前环境变量 -h:显示帮助; -H:将HOME环境变量设为新身份的HOME环境变量; -k:结束密码的有效期限,也就是下次再执行...sudo时便需要输入密码; -l:列出目前用户可执行与无法执行的指令; -p:改变询问密码的提示符号; -s:执行指定的shell; -u:以指定的用户作为新的身份。...是/bin/bash,则会加载/root/.bashrc等配置。...如果真选择Q,那么sudo将不会再运行,直到错误被纠正。 现在,我们一起来看一下神秘的配置文件,学一下如何编写它。...因为考虑到安全问题,一部分环境变量并没有传递给sudo后面的命令,或者被检查后再传递的,比如:PATH,HOME,SHELL等。当然,你也可以通过sudoers来配置这些环境变量。

    25710

    7.管道、管道、环境变量与其他常用命令

    管道右边的命令必须能接受 stdin。 多个管道命令可以串联。 与文件重定向的区别: 文件重定向左边为命令,右边为文件。 管道左右两边均为命令,左边有 stdout,右边有 stdin。...-name '*.py' | xargs cat | wc -l xargs 可以将 stdin 转化为 cat 命令的参数。...为了将对环境变量的修改应用到未来所有环境下,可以将修改命令放到~/.bashrc文件中。...修改完~/.bashrc文件后,记得执行source ~/.bashrc,来将修改应用到当前的bash环境下。 为何将修改命令放到~/.bashrc,就可以确保修改会影响未来所有的环境呢?...free -h:查看内存使用情况 du -sh:查看当前目录占用的硬盘空间 ps aux:查看所有进程 kill -9 pid:杀死编号为pid的进程 传递某个具体的信号:kill -s SIGTERM

    65030

    shell_环境变量_常量_位置变量_运算(3)

    文章目录 保存永久环境变量 常量 位置变量 ln -s 源文件 连接文件 ls |wc -l pidof shift $?....短暂的环境变量:   直接运行export命令定义变量【只对当前shell(BASH)有效(临时的)】   在shell的命令行下直接使用[export变量名=变量值]定义变量,该变量只在当前的shell...显示输入的所有的变量 1. $* 传递给脚本的所有参数,全部参数合为一个字符串 2. $@ 传递给脚本的所有参数,每个参数为独立的字符串;脚本嵌套脚本使用 区别 : ex:.../f1.sh a b c >#f1.sh arg is a b c >#f2.sh arg is a b c 将$*换成$@时 >#f2.sh arg is.../bin/bash echo "name=$name" 显示进程树 ----bash----f1.sh f1.sh为bash的子进程,局部变量间的父子变量不可相互影响 不可相互传递

    66430

    【linux命令讲解大全】184.Linux 命令行教程之 sudo 命令详解

    语法 sudo [options] [command] 选项 -b:在后台执行指令; -E:继承当前环境变量; -h:显示帮助; -H:将 HOME 环境变量设为新身份的 HOME 环境变量; -k:结束密码的有效期限...,也就是下次再执行 sudo 时便需要输入密码; -l:列出目前用户可执行与无法执行的指令; -p:改变询问密码的提示符号; -s:执行指定的 shell; -u:以指定的用户作为新的身份...超级用户的 SHELL 是 /bin/bash,则会加载 /root/.bashrc 等配置。...如果真选择 “Q”,那么 sudo 将不会再运行,直到错误被纠正。 现在,我们一起来看一下神秘的配置文件,学一下如何编写它。...因为考虑到安全问题,一部分环境变量并没有传递给 sudo 后面的命令,或者被检查后再传递的,比如:PATH、HOME、SHELL 等。当然,你也可以通过 sudoers 来配置这些环境变量。

    69210

    进程控制第二弹(进程程序替换)

    调用exec并不创建新进程,所以调用exec前后该进程的id并未改变 我们知道,进程=内核数据结构+代码数据 程序替换的本质是将当前进程的代码和数据进行替换。 替换的时候,会不会创建新的进程?...需要执行的路劲,需要带路劲 后面的参数:在命令行中怎么执行 例如: execl("/usr/bin/ls","ls","-l","-a",NULL); execv execv(const char...<<endl; return 0; } 运行结果: 结论:我们平时自己运行的程序,命令行参数和环境变量是父进程给你的,父进程自己有一个环境变量表,创建子进程时把对应的信息传递给子进程...父进程本身就有一批环境变量,从“爷爷进程”来的,即bash 这个传参,如果传的是自定义的环境变量,那么就整体替换所有环境变量 传环境变量有三种情况: 用全新的给子进程 用老的环境变量给子进程,environ...老的环境变量稍作修改,传递给子进程 总结

    8710

    shell编程基础

    shell命令shell定义Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。.../bin/bashecho "hello, shell"让shell找到你写的文件,有两种方式:1) 将shell脚本文件所处的目录添加到PATH环境变量中;2) 在提示符中用绝对或相对文件路径来引用shell.../bin/bashnum=123echo "$num"echo "${num}"只读变量:使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。#!...$-显示Shell使用的当前选项,与set命令功能相同。$?显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。#!...在函数中使用变量函数可以使用标准的参数环境变量来表示命令行上传给函数的参数。例如,函数名会在\$0变量中定义,函数命令行上的任何参数都会通过\$1、\$2等定义。

    77430

    如何编写一个shell脚本

    下面,让我们一起来看看shell是如何工作的:  建立一个脚本  Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行shell编程,因为bash...我们不对环境变量进行讨论,因为通常情况下仅仅在登录脚本中使用环境变量。   ...常用命令语法及功能  echo "some text": 将文字内容打印在屏幕上  ls: 文件列表  wc –l filewc -w filewc -c file: 计算文件行数计算文件中的单词数计算文件中的字符数...这里有个问题,那就是我们必须有两个命令: -打印错误信息-退出程序   我们使用花括号以匿名函数的形式将两个命令放到一起作为一个命令使用。一般函数将在下文提及。  ...循环完成之后,我们将原始文件命名为文件1同时建立一个与原始文件同名的空文件。   调试  最简单的调试命令当然是使用echo命令。您可以使用echo在任何怀疑出错的地方打印任何变量值。

    1.7K40

    shell语法简单介绍

    我们不正确环境变量进行讨论,由于通常情况下只在登录 脚本中使用环境变量。 二、概念: 管道, 重定向和 backtick 这些不是系统命令,可是他们真的非常重要。...反短斜线 使用 反短斜线 (“ ` “)能够将一个命令的输出作为另外一个命令的一个命令行參数。 命令: find ....这里有个问题,那就是我们必须有两个命令: -打印错误信息 -退出程序 我们使用花括号以 匿名函数 的形式将两个命令放到一起作为一个命令使用。一般函数将在下文提及。...脚本首先在全部输入命令行參数中进行循环,将输入參数 与case表达式进行比較,假设匹配则设置一个变量而且移除该參数。...关于linux命令的具体内容请參考《Linux命令简单介绍》 经常使用命令语法及功能 echo “some text”: 将文字内容打印在屏幕上 ls: 文件列表 wc –l filewc

    59710

    第十六章 Shell编程

    /bin/bash ---指定编译本脚本的shell echo hello ---输入多条命令 ls -l /var/ echo over 以上就是一个脚本的最简单的案例.../bin/bash一般必须书写,至于后面的命令,可以根据个人需求自定义编写。...图中可见,通过命令更改了PS1变量的值,立即生效了,但输入bash命令后,等于有重新打开了一个shell,该shell嵌套与于原shell之外,环境变量并未改变。...其实,每个shell都会有自己一套完整的、独立的环境变量配置,当打开一个新shell时,所有的环境变量将按系统的默认值初始化,所以新开shell不会受原shell的影响。.../bin/bash jiaFa(){ letres=$1+$2 #使用参数,进行计算,参数与调用方给定的一一对应 echores=$res } shu1

    1.1K51

    【Linux课程学习】:进程程序替换,execl,execv,execlp,execvp,execve,execle,execvpe函数

    (C/C++从mian函数开始执行) exe程序替换函数一般是子进程进行调用。 调用exe类型的函数不会创建新进程,调用exe函数的进程pid不会改变。 ​...●p(PATH):有p表示自动搜索环境变量PATH。 ●e(env):表示自己维护环境变量。 命令: 在/usr/bin中放置的就是命令的可执行文件。 ​...#include #include int main() { int a=execl("/usr/bin/ls","ls","-l","-a","...#include #include int main() { //int a=execl("/usr/bin/ls","ls","-l",...对于env我们可以传递父进程的环境变量,也可以在父进程的环境变量上新增。 2.刚刚开始的bash进程就要传递自己写的环境变量。自己写的环境变量,自己定义,自己传递。

    10210

    Linux系统Bash的常用功能

    bash还具备记录命令、文件或命令的补全功能、环境变量的使用等,下面我们会介绍bash的发展以及常用的特性.本章的内容,是一个呈上启一下的东西,在以后的主机维护中作用很大,务必掌握.硬件内核与Shell...ctrl+E将光标移动到命令结尾ctrl+C强制终止当前命令ctrl+L清屏ctrl+U删除或剪切光标之前的命令ctrl+K删除或剪切光标之后的命令ctrl+Y粘贴,ctrl+U或ctrl+K的内容ctrl...#统计单词数(字符串) -l #统计行数◆uniq 取消重复行◆uniq命令用于报告或忽略文件中的重复行,一般与sort命令结合使用....,paste是直接将两个文件贴在一起,且中间以TAB隔开而已....#以行数来进行切割◆xargs 代数转换◆xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具,它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令的命令参数

    3.3K30

    Linux基础(五)

    ,我们能够得出:./ /bin/bash source三种执行方式的不同 ./ 与 /bin/bash 都是新开进程,进行执行,此时本地变量不会被继承,不改变当前环境,通常用于执行脚本文件 source...则是将子进程放到父进程进行执行,将影响当前环境,常用于读取配置文件 5、bash中变量分类、 本地变量(普通变量):生效范围为当前shell,对当前shell之外的其他shell进程,包括当前shell...EXPRESSION 必须使用测试命令进行 实例: #[ -f /bin/bin/cat -a -x /bin/cat ] && cat /etc/fstab 如何判断输入的是数字 方法一 m=10 expr...echo $b yyy -->echo $c zzz read m n l 12、bash中如何展开命令行 把命令行分成单个命令词 展开别名 展开大括号中的声明{} 展开波浪符声明~ 命令替换$()和`...:定义环境变量和开机启动项 source (.) scriptnaem 在当前shell执行*/ /bin/bash ./ 不开子进程执行 退出执行 /etc/bash_logout 退出的时候自动执行的文件

    1.2K80

    Bash 编程

    正则表达式匹配操作符将字符串与正则表达式进行比较,如果字符串与正则表达式匹配,则表达式等价于true,否则等价于false。...现在我们将开始使用source命令,它允许我们将bash脚本中的函数定义作为命令行命令使用 。...如果成功,这些命令不会打印任何值。 我们经常会编写函数来计算某个值,理解如何将函数的结果存储在变量中以便以后使用是很重要的。...与阅读小说相比,阅读诗歌会诱发不同的认知负荷。 那些不阅读程序源代码的人(大多数用户不会——他们不应该这样做)将能够更容易地理解程序的输入、输出和副作用。...环境变量 我们距离能够将脚本和函数作为shell命令使用只有一步之遥,但是首先我们需要了解环境变量。环境变量是Bash创建的变量,用于存储关于当前计算环境的数据。环境变量名全部使用大写字母。

    4.4K30

    Shell脚本编程_shell简单脚本

    ,与 csh 完全兼容,提供更多的功能 /bin/csh #已经被 /bin/bash 所替换(整合 c shell,提供更多的功能) /sbin/nologin #奇怪的 shel1,这个 shell...命令错误:后续的命令还会继续执行,用 bash -n 无法检查出来 ,可以使用 bash -x 进行观察。 逻辑错误:只能使用 bash -x 进行观察。 2.2 脚本执行方法 相对路径执行( ....bash shell 中内置的变量,在脚本代码中调用通过命令行传递给脚本的参数。...可以将经常使用的函数存入一个单独的函数文件,然后将函数文件载入 shell,再进行调用函数 文件名可任意选取,但最好与相关任务有某种联系,例如:functions 一旦函数文件载入 shell,就可以在命令行或脚本中调用函数.../bin/bash ./$0|./$0& 2.12 一些脚本相关工具 (1) 信号捕捉 trap trap '触发指令' 信号 进程收到系统发出的指定信号后,将执行自定义指令,而不会执行原操作 trap

    8K10
    领券