精华内容
下载资源
问答
  • shell脚本中设定的路径和环境变量只对改shell和其子shell有效。 对其父shell和其它shell无效。 解决方法: source filename.sh 就OK了。source 使shell脚本里的设置对其它shell也有效。 ...

    shell脚本中设定的路径和环境变量只对改shell和其子shell有效。 对其父shell和其它shell无效。

    解决方法:

    source filename.sh

    就OK了。source 使shell脚本里的设置对其它shell也有效。

    展开全文
  • 临时的:在shell窗口使用export命令行声明即可,变量在关闭shell失效。 方法 1、临时生效: 在shell的命令行下直接输入: [export变量名=变量值]定义变量 例如:export PATH=~/bin:$PATH (该变量只在当前的sh

    问题描述

    通过“export PATH=~/bin:$PATH”指令设置环境变量后,立马生效,但退出shell重新打开后提示异常

    Command 'repo' not found, did you mean:
    
      command 'repl' from deb mailutils-mh (1:3.7-2.1)
      command 'repl' from deb mmh (0.4-2)
      command 'repl' from deb nmh (1.7.1-6)
      command 'rep' from deb rep (0.92.5-3build5)
      command 'reno' from deb python3-reno (2.11.2-2build1)
      command 'repc' from deb qtchooser (66-2build1)
    
    Try: apt install <deb name>
    

    原因分析

    环境变量设置分为:“环境变量永久生效” 和 “临时生效”。

    1. 永久的:需要手动修改配置文件,变量永久生效。
    2. 临时的:在shell窗口使用export命令行声明即可,变量在关闭shell时失效。

    方法

    1、临时生效:
    在shell的命令行下直接输入: [export变量名=变量值]定义变量
    例如:export PATH=~/bin:$PATH
    (该变量只在当前的shell下是有效的,shell关闭了,变量也就失效了,再打开新shell时就没有这个变量,需要使用的话还需要重新定义。)
    2、永久生效
    用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且是“永久的”。
    示例:
    /打开etc/profile文件/
    # vi /etc/profile
    /在文件中添加/
    export PATH=~/bin:$PATH
    修改完成后保存并退出。
    可选择重启生效或输入# source /etc/profile立即生效,示例如下:

    root@LAPTOP-89HUIFG7:/# vi /etc/profile
    root@LAPTOP-89HUIFG7:/# source /etc/profile
    root@LAPTOP-89HUIFG7:/# repo
    error: repo is not installed.  Use "repo init" to install it here.
    root@LAPTOP-89HUIFG7:/# repo init
    

    参考链接:https://blog.csdn.net/zhouzhuan2008/article/details/8663399

    展开全文
  • 说说shell脚本中的export 和 source,bash 小弟刚刚接触linux,对linux上的很多东西都比较陌生,所以写一写博客,当做自己工作的总结和技术的积累吧,也是鞭策自己不断努力的去学习。 今天之所以起这个标题,把...

    说说shell脚本中的export 和 source,bash

    小弟刚刚接触linux,对linux上的很多东西都比较陌生,所以写一写博客,当做自己工作的总结和技术的积累吧,也是鞭策自己不断努力的去学习。

    今天之所以起这个标题,把export,source ,bash这三个命令放在一起讲,实在是因为自己做了一件蠢事。 什么样的蠢事先不说。先分析下这三个命令。

    首先是export命令。

    • 1.export命令

    Linux export命令用于设置或显示环境变量。

    在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。同时,重要的一点是,export的效力仅及于该次登陆操作。注销或者重新开一个窗口,export命令给出的环境变量都不存在了。

    该命令的语法如下:

    export [-fnp][变量名称]=[变量设置值]

    其中:

    • -f  代表[变量名称]中为函数名称。
    • -n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
    • -p  列出所有的shell赋予程序的环境变量。

    你可以只打出export来查看当前的所有环境变量。如果你要在某个环境变量(比如PATH)中加入一些新的路径(如/bin/bash),可以使用如下命令格式

    export PATH=/bin/bash:$PATH

    就OK了。

    • 2.bash命令

    像sh,bash,./命令是用来执行shell脚本的,用例如下:

    [root@localhost bin]#bash  filename
    [root@localhost bin]#sh filename
    [root@localhost bin]#./filename

    这三种形式都是用来打开一个子shell来读取并执行FileName中命令。运行一个shell脚本时会启动另一个命令解释器。每个shell脚本有效地运行在父shell(parent shell)的一个子进程里。 这个父shell是指在一个控制终端或在一个xterm窗口中给你命令指示符的进程。shell脚本也可以启动他自已的子进程。这些子shell(即子进程)使脚本并行地,有效率地地同时运行脚本内的多个子任务。略有不同的是:在bash/sh命令下,filename文件可以无"执行权限",即没有rwx中的x权限。而对于./命令,filename文件必须要有执行权限。

    接下来是source命令

    • 3.source命令

    该命令的用例如下:

    [root@localhost bin]#source filename
    [root@localhost bin]# . filename

    作用:在当前bash环境下读取并执行FileName中的命令。该filename文件可以无"执行权限"。该命令通常用命令“.”来替代。

     source(或点)命令通常用于重新执行刚修改的初始化文档。source命令(从 C Shell 而来)是bash shell的内置命令。

    而点命令,就是个点符号,(从Bourne Shell而来)。

    source的程序主体是bash,脚本中的$0变量的值是bash。

     

    好的,现在可以说自己干了什么蠢事了。一般在执行脚本程序前,都要先设置一下自己要用到的环境变量,再跑自己的程序脚本。有一天早上我跑完脚本,发现!发现!发现!/bin目录下的文件全被我删了!!!当时心里是崩溃的。于是调查原因。才发现了问题出在bash命令和source命令上。不废话,上图。

    愚蠢的我使用了bash命令设置环境变量(env.sh),跑完env.sh后程序回到父shell,变量自然都失效了,然后再跑工作脚本,结果工作脚本中有rm语句,结果就悲剧了。

    所以在linux下跑程序并不是那么无脑,有时候还真是要多想想。今天就到这里,以后再来!(希望不要在出删/bin目录这种幺蛾子了= =)

     

    作者:非我在

    出处:http://www.cnblogs.com/flying-tiger/

     

    1、source命令用法:

      source FileName

      作用:在当前bash环境下读取并执行FileName中的命令。该filename文件可以无"执行权限"

        注:该命令通常用命令“.”来替代。

        如:source .bash_profile

            . .bash_profile两者等效。

        source(或点)命令通常用于重新执行刚修改的初始化文档。

        source命令(从 C Shell 而来)是bash shell的内置命令。

        点命令,就是个点符号,(从Bourne Shell而来)。

    2、sh和bash命令用法:

         sh FileName

         bash FileName

         作用:在当前bash环境下读取并执行FileName中的命令。该filename文件可以无"执行权限"

         注:两者在执行文件时的不同,是分别用自己的shell来跑文件。

       sh使用“-n”选项进行shell脚本的语法检查,使用“-x”选项实现shell脚本逐条语句的跟踪,

       可以巧妙地利用shell的内置变量增强“-x”选项的输出信息等。

    3、./的命令用法:

         ./FileName

         作用:打开一个子shell来读取并执行FileName中命令。

         注:运行一个shell脚本时会启动另一个命令解释器.

             每个shell脚本有效地运行在父shell(parent shell)的一个子进程里.

                这个父shell是指在一个控制终端或在一个xterm窗口中给你命令指示符的进程.

             shell脚本也可以启动他自已的子进程.

                这些子shell(即子进程)使脚本并行地,有效率地地同时运行脚本内的多个子任务.

    shell的嵌入命令:

    : 空,永远返回为true
    .   从当前shell中执行操作
    break 退出for、while、until或case语句
    cd 改变到当前目录
    continue 执行循环的下一步
    echo 反馈信息到标准输出
    eval 读取参数,执行结果命令
    exec 执行命令,但不在当前shell
    exit 退出当前shell
    export 导出变量,使当前shell可利用它
    pwd 显示当前目录
    read 从标准输入读取一行文本
    readonly 使变量只读
    return 退出函数并带有返回值
    set 控制各种参数到标准输出的显示
    shift 命令行参数向左偏移一个
    test 评估条件表达式
    times 显示shell运行过程的用户和系统时间
    trap 当捕获信号时运行指定命令
    ulimit 显示或设置shell资源
    umask 显示或设置缺省文件创建模式
    unset 从shell内存中删除变量或函数
    wait 等待直到子进程运行完毕

    下面再看下 shell 脚本各种执行方式(source ./*.sh, . ./*.sh, ./*.sh)的区别

    结论一: ./*.sh的执行方式等价于sh ./*.sh或者bash ./*.sh,此三种执行脚本的方式都是重新启动一个子shell,在子shell中执行此脚本。

    结论二: .source ./*.sh和 . ./*.sh的执行方式是等价的,即两种执行方式都是在当前shell进程中执行此脚本,而不是重新启动一个shell 而在子shell进程中执行此脚本。

    验证依据:没有被export导出的变量(即非环境变量)是不能被子shell继承的

    验证结果:

    ?

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    [root@localhost ~]#name=dangxu    //定义一般变量

    [root@localhost ~]# echo ${name}

    dangxu

    [root@localhost ~]# cat test.sh   //验证脚本,实例化标题中的./*.sh

    #!/bin/sh

    echo ${name}

    [root@localhost ~]# ls -l test.sh  //验证脚本可执行

    -rwxr-xr-x 1 root root 23 Feb 6 11:09 test.sh

    [root@localhost ~]# ./test.sh    //以下三个命令证明了结论一

    [root@localhost ~]# sh ./test.sh

    [root@localhost ~]# bash ./test.sh

    [root@localhost ~]# . ./test.sh   //以下两个命令证明了结论二

    dangxu

    [root@localhost ~]# source ./test.sh

    dangxu

    [root@localhost ~]#

    总结

    以上所述是小编给大家介绍的shell中source、sh、bash、./执行脚本的区别,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

    展开全文
  • macos shell命令失效

    2020-10-15 12:08:00
    export后发现path是空的。 step1. 在terminal里面输入: export PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin" 然后命令暂时可以用了, step2. vim ~/.bash_profile,在文本编辑器里面打开....

    比如: 
    -bash: ls :command not found 
    也不知道哪里出了错, 
    export后发现path是空的。 


    step1. 
    在terminal里面输入: 
    export PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin" 

    然后命令暂时可以用了, 
    step2. 
    vim ~/.bash_profile,在文本编辑器里面打开.bash_profile文件: 
    step3. 
    更改PATH环境变量设置,添加上这一行, 
    export PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin" 

    再保存就没问题了。

    展开全文
  • Linux shell脚本export无效

    千次阅读 2019-11-11 15:49:03
    shell脚本设置了环境变量,如export LIBRARY_PATH=./lib/,执行了此脚本后, 在执行生成的可执行文件,提示错误 error while loading shared libraries: libww.so: cannot open shared object file: No such file ...
  • source(.)/export/shell

    2017-09-25 20:17:00
    用户登录到Linux系统后,系统将启动一个用户shell。在这个shell中,可以使用shell命令或声明变量,也可以创建并运行shell脚本程序。运行shell脚本程序时,系统将创建一个子shell。此时,系统中将有两个shell,一个是...
  • Shell:export命令

    2021-01-05 10:30:21
    语 法:export [-fnp][变量名称]=[变量设置值] 补充说明:在shell中执行程序时,shell会提供一组环境变量。 export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该此登陆操作。 参 数: ...
  • 近段时间由于项目需要,写了很多shell脚本,需要放到crontab中定期执行,由于一开始没有太注意,放在crontab中的shell脚本执行总是失效,经过上网查资料,总结几个要点如下: 1、shell脚本中要使用文件的绝对路径,...
  • shell脚本中export命令未生效,原因详解 问题:我有一个脚本,脚本中有如下一条语句 export fdu=“dufan” 用sh运行脚本后,在当前shell利用命令env查看环境变量,但是却没有fdu变量,难道是因为我的export语句...
  • 导航窗格0. 问题场景:shell脚本中的export怎么都无法起作用1. 原因2. 解决方法3. “.”、“source”、“sh”、“./”、“export”的区别站内参考 0. 问题场景:shell脚本中的export怎么都无法起作用 测试需要导入...
  • shell脚本常用函数和命令(4)export详解功能说明:设置或显示环境变量。语 法:export [-fnp][变量名称]=[变量设置值]说明:在shell中执行程序时,shell会提供一组环境变量。 export可新增,修改或删除环境变量。-f ...
  • export:将自定义变量设定为系统环境变量(当前shell中有效) 功能说明:设置或显示环境变量。 语 法:export  [-fnp][变量名称]=[变量设置值] 补充说明:在shell中执行程序时,shell会提供一组环境...
  • 每个步骤里都有好多环境变量要设置,于是在脚本里各种用export,发现在执行后根本没有修改到环境变量。于是在网上各种搜,找到解决办法。 解决:比如脚本为run.sh,如果执行./run.sh是不生效的,要执行source ./run...
  • 弄flink搞的, .bashrc中有: export TERM=xterm 然后直接导致reset清屏命令失效. 解决方案: 在.bashrc中修改为如下命令: export TERM=xterm-256color
  • shell变量包括两种变量1.本shell私有的变量:通过赋值语句定义好的变量,...用户的环境变量:通过export语法导出的shell私有变量,可以通过如下方法导出用户环境变量 A1="1234" export A1 #先定义再导出 export A3="...
  • 自动重建失效index的shell脚本脚本每一个小时运行一次,检测失效索引,一旦发现立刻重建脚本全部内容如下:[oracle@orac1 pump]$ more /home/oracle/tools/rebuild_index....
  • 今天之所以起这个标题,把export,source ,bash这三个命令放在一起讲,实在是因为自己做了一件蠢事。 什么样的蠢事先不说。先分析下这三个命令。 首先是export命令。 1.export命令 Lin
  • 今天之所以起这个标题,把export,source ,bash这三个命令放在一起讲,实在是因为自己做了一件蠢事。 什么样的蠢事先不说。先分析下这三个命令。 首先是export命令。 1.export命令 Linux export命令用于设置或...
  • 说说shell脚本中的export 和 source,bash 小弟刚刚接触linux,对linux上的很多东西都比较陌生,所以写一写博客,当做自己工作的总结和技术的积累吧,也是鞭策自己不断努力的去学习。 今天之所以起这个标题,把...
  • 每个步骤里都有好多环境变量要设置,于是在脚本里各种用export,发现在执行后根本没有修改到环境变量。于是在网上各种搜,找到解决办法。 解决:比如脚本为run.sh,如果执行./run.sh是不生效的,要执行source ./run...
  • shell脚本 判断 centos 版本(6/7)执行不同代码: # 变量 v 保存命令执行结果 使用反斜单引号 (``)包裹命令 v=`cat /etc/redhat-release|sed -r 's/.* ([0-9]+)\..*/\1/'` if [ $v -eq 6 ]; then echo &...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,836
精华内容 5,534
关键字:

exportshell失效