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

如何从其他Bash脚本来源的任何目录执行Bash脚本(不使用path变量)

从其他Bash脚本来源的任何目录执行Bash脚本的方法是使用绝对路径来执行脚本。以下是具体步骤:

  1. 获取当前脚本的路径:可以使用$0来获取当前脚本的路径,例如:
  2. 获取当前脚本的路径:可以使用$0来获取当前脚本的路径,例如:
  3. 构建要执行的脚本的绝对路径:假设要执行的脚本名为script.sh,可以使用以下命令来构建绝对路径:
  4. 构建要执行的脚本的绝对路径:假设要执行的脚本名为script.sh,可以使用以下命令来构建绝对路径:
  5. 执行脚本:使用构建的绝对路径来执行脚本,例如:
  6. 执行脚本:使用构建的绝对路径来执行脚本,例如:

这样,无论当前脚本位于哪个目录,都可以通过绝对路径执行其他Bash脚本。

注意:在执行脚本之前,确保目标脚本具有执行权限。可以使用chmod +x script.sh命令为脚本添加执行权限。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)

  • 产品介绍链接地址:https://cloud.tencent.com/product/cvm
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何从Bash脚本本身中获得其所在的目录

问: 如何从Bash脚本本身中获得其所在的目录? 我想使用Bash脚本作为另一个应用程序的启动器。我想把工作目录改为Bash脚本所在的目录,以便我可以对该目录下的文件进行操作,像这样: $ ....但是在以相对路径的方式去执行脚本时,获取的目录信息是相对路径,不能满足其他需要获取绝对路径的场景。 如果要获取绝对路径,可以使用如下方法: #!...$script_dir 其中第3行代码,无论从何处调用它,都将为你提供脚本的完整目录路径。...测试结果如下: 另外,可以根据第一种方法结合使用 realpath 命令,也可获取脚本所在目录的绝对路径: #!..."cd"来更改目录 为什么在可执行文件或脚本名称之前需要.

34920
  • 理解 LinuxUnix 登录脚本

    Bash使用特定来源的配置,而不是定义一个花哨的shell提示符,因为Bash支持反斜杠转义的特殊字符,例如\u(用户名) 和 \h (主机名),许多其他的shell都不支持这样定义。...即使用户没有修改.profile文件,它也可能利用默认~/.profile功能,将~/bin添加到$PATH环境变量。...但是它也相当复杂,类似于/etc/profile怎么从/etc/profile.d目录中的脚本读取配置,怎么从/etc/X11/Xsession.d/目录下的/etc/X11/Xsessions脚本中读取配置...如果你希望一个脚本可以找到一个私人目录路径,并且添加它到你的PATH中,你需要考虑这个目录是不是会移动很多东西,如果你向.profile添加代码来实现,用户需要注销然后再登录来更改用户会话期间的PATH...希望你现在可以更好地了解了登录和注销脚本在Debian GNU/Linux系统上的工作原理。如果你已经为这些登录和注销脚本创建、或者遇到任何特别有趣或有创新的用途,请在评论中告诉我们你是如何做到的。

    1.2K10

    Bash 编程

    你还可以通过使用read命令暂时停止程序的执行,要求用户在命令行上输入一个字符串。让我们写一个小脚本,你可以看到read命令是如何工作的: #!...如果成功,这些命令不会打印任何值。 我们经常会编写函数来计算某个值,理解如何将函数的结果存储在变量中以便以后使用是很重要的。...当shell启动时,它会在这些路径中搜索可执行文件,然后让这些可执行命令在我们的shell中可用。使我们的脚本可用的一种方法是向PATH添加一个目录。可执行目录中的Bash脚本可以作为命令使用。...每次启动shell时,我们都需要修改PATH,因此可以修改~/.bash_profile(Linux一般是~/.bashrc)使可执行脚本的目录始终位于PATH中。...要修改环境变量,我们需要使用export关键字。 首先,让我们在Code目录中创建一个名为Commands的新目录,在那里我们可以保存可执行脚本。

    4.4K30

    Bash: Command Not Found命令未找到

    在某些情况下,流行的命令可能会停止使用,你甚至可能不能再安装它。你必须找到一个可替代的命令。 以ifconfig命令为例。这个不推荐使用的命令用于获取IP地址和其他网络接口信息。.../sample hello world 如果你在其他目录中并尝试执行shell脚本而不提供文件的正确路径,shell会提示command not found命令未找到。...但当你使用cd命令切换其它目录时,需要执行此命令,你必须指定该程序的可执行文件整个路径。 在这里,你可以使用PATH环境变量。...这个变量有一个目录集合,这些目录有各种Linux命令的二进制(可执行)文件。当你运行命令时,你的Linux系统的shell会检查PATH环境变量以查找该命令的可执行文件。...也许你已经知道Linux如何找到你要运行的命令。当Linux系统shell执行你指定的命令时。你要么在运行时提供相对路径或者绝对路径,要么命令所在目录的位置添加到PATH环境变量中。

    5.8K10

    深入了解定制 Bash | Linux 中国

    "$BASH_ENV"; fi 值得注意的是,不会使用 PATH 环境变量的值来搜索该文件名(LCTT 译注:意即不会检索搜索路径)。...另外,处理 BASH_ENV 时并不会使用 PATH 变量所存储的值(LCTT 译注:意即不会检索搜索路径),所以它必须包含执行文件的绝对路径。...重复行、以空白打头的行,都能通过该选项将它们从命令历史中过滤掉。引用自 Dusty Mabe,这是我从他那儿得到的技巧: ignoredup 可以让历史不记录重复条目(如果你反复执行同一条命令)。...它是系统上的命令的搜索路径。注意,有些应用要求将它们自己的目录加入 PATH 变量,这样才能正常使用。跟 CDPATH 一样,通过在赋值右侧引用原值来追加新值到 PATH 变量。...你使用终端和电脑的姿势,取决于你如何修改(或不修改)你的点文件。 如果你很好奇自己的命令行处于什么会话状态,使用下面这个脚本来判断一下。 #!

    1.1K30

    如何在 Linux 中运行一个 Shell 脚本

    为什么当你在同一个目录下,却不能使用脚本名称?这是因为你的 Linux 系统会在 PATH 环境变量中指定的几个目录中查找可执行的文件来运行。...这就是为什么你可以在你系统的任何位置通过使用命令的名称来运作这些命令的原因。看看,ls 命令就是位于 /usr/bin 目录中。...当你使用脚本而不具体指定其绝对路径或相对路径时,系统将不能在 PATH 环境变量中找到提及的脚本。 为什么大多数 shell 脚本在其头部包含 #! /bin/bash ?...记得我提过 shell 只是一个程序,并且有 shell 程序的不同实现。 当你使用 #! /bin/bash 时,你是具体指定 bash 作为解释器来运行脚本。如果你不这样做,并且以 ....在 zsh 中,数组索引是从 1 开始的,而不是从 0 开始。 Bash Vs Zsh 使用 #!

    3.5K20

    NO.3 Shell脚本

    重复化、复杂化的工作,通过把工作的命令写成脚本,以后仅仅需要执行脚本就能完成这些工作。 如何学习脚本?...1、尽可能记忆更多的命令 2、掌握脚本的标准的格式(指定魔法字节、使用标准的执行方式运行脚本) 3、必须熟悉掌握脚本的基本语法(以下列表仅仅的基本要求,还有很多更深更难的语法需要自己扩充学习) 变量定义...脚本执行方法: 标准脚本执行方法(建议):(魔法字节指定的程序会生效) 非标准的执行方法(不建议):(魔法字节指定的程序不会运作) 总结: ....或者sh -x xxx.sh --可以显示执行过程,帮助排错 补充: bash中的引号: 双引号 "" 会把引号的内容当成整体来看待,允许通过$符号引用其他变量值 单引号 '' 会把引号的内容当成整体来看待...可对一行命令进行分割,在执行过程中考虑上一个命令执行是否是正确的 || 逻辑或 变量的分类: 本地变量:当前用户自定义的变量。当前进程中有效,其他进程及当前进程的子进程无效。

    86520

    profile与bashrc分析

    当bash shell被打开时,该文件被读取. ~/.bash_profile : 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!...另外:/etc/profile中设定的变量(全局)的可以作用于任何用户;~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系 ~/.bash_profile.../profile脚本先依次执行/etc/profile.d/*.sh,随后bash会执行用户主目录下的.bash_profile脚本,.bash_profile脚本会执行用户主目录下的.bashrc脚本...在/etc/profile脚本中,会在PATH变量的最后增加/usr/X11R6/bin目录 在HOME/.bash_profile中,会在PATH变量的最后增加HOME/bin目录 以root用户为例...| /bin/egrep -q "(^|:)|:)"是过滤 #也就是不增加执行目录到$PATH中,选项-q禁止所有的输出到标准输出,不管匹配行。

    2.4K20

    教你写出健壮可靠的shell脚本!

    显示未定义的变量 shell中变量没有定义,仍然是可以使用的,但是它的结果可能不是你所预期的。举个例子: //来源:公众号【编程珠玑】 //作者:守望先生#!...,而避免执行后面无意义的命令,那么可以在开始设置: set -o pipefail 不设置的情况下,cat test.sh即使执行失败了,后面的grep实际上还会继续执行,可能会导致一些意想不到的情况发生...对于静态变量使用readonly 通常我们会在脚本开头定义一些静态变量: MY_PATH=/usr/bin 而为了避免MY_PATH被意外修改,可以这样: readonly MY_PATH=/usr/...多条命令执行使用&& 例如: cmd0;cmd1;cmd1 这里如果cmd0失败了,后面的命令仍然会执行,而如果不希望后面的命令执行,可以使用: cmd0 && cmd1 && cmd1 使用函数...总结 实际上最开始介绍的脚本检查工具就已经非常有效了,基本的错误都能检查出来,而其他的内容,更多的是关注于脚本调试,不放过任何一个可能的错误。 最后,还是优先推荐shellcheck工具。

    2.6K10

    shell编程菜鸟教程_java并发编程实战 pdf

    /a.sh 执行结果: 下面是几种运行情况: a.sh 这样的话需要保证脚本具有执行权限并且在环境变量PATH中有(.),这样在执行的时候会先从当前目录查找。 ....bash -x /path/to/aa.sh bash的单步执行 bash -n /path/to/aa.sh bash语法检查 变量 变量不需要声明,初始化不需要指定类型 变量命名 1、只能使用数字...nohup会在当前执行的目录生成一个nohup.out日志文件 标准输入、输出、错误、重定向 标准输入、输出、错误可以使用文件描述符0、1、2引用 使用重定向可以把信息重定向到其他位置 ls >file...非交互式的:这种shell可能由某些自动化过程启动,不能直接从请求用户的输入,也不能直接输出结果给终端用户看。输出最好写到文件。比如使用Shell脚本。...当bash以login shell启动时,它会执行/etc/profile中的命令,然后/etc/profile调用/etc/profile.d目录下的所有脚本;然后执行~/.bash_profile,

    4.6K20

    shell的进阶上

    /shell.sh 来执行 变量『PATH』功能:将 shell.sh 放在 PATH 指定的目录内,例如: ~/bin/ 以 bash 程序来执行:透过『 bash shell.sh 』或『 sh shell.sh...利用直接执行的方式来执行 script 当使用前一小节提到的直接指令下达 (不论是绝对路径/相对路径还是 ${PATH} 内),或者是利用 bash (或 sh) 来下达脚本时,该 script 都会使用一个新的...bash 环境来执行脚本内的指令!...同样的脚本我们来执行看看:看不到任何东西了! 利用 source 来执行脚本:在父程序中执行 如果你使用 source 来执行指令那就不一样了!...这也是为啥你不注销系统而要让某 些写入 ~/.bashrc 的设定生效时,需要使用source ~/.bashrc而不能使用bash ~/.bashrc 是一样的!

    66230

    linux bash环境变量简单总结

    常见的环境变量: PATH: 决定了shell将到哪些目录中寻找命令或程序 ROOTPATH: 这个变量的功能和PATH相同,但它只罗列出超级用户(root)键入命令时所需检查的目录。...:查看当前系统所支持的字符集】 LANG 没有设置任何LC_XXX变量时所使用的默认值。...:后台运行的最后一个进程号 $_:在此之前执行命令或脚本的最后一个参数 引号对变量赋值的影响: 》双引号“”:允许通过$符号引用其他变量值 》单引号‘’: 禁止引用其他变量值,$视为普通字符 》反撇号`...这种Login shell 执行脚本的顺序: 1. /etc/profile 【全局profile文件;它定义了LoginUser的 PATH, USER, LOGNAME(登录使用者帐号)】 2....八.其它与变量相关的小知识 shell : 属于弱类型语言,变量可直接使用,不需要声明和初始化。 对于强类型语言,则必须在使用变量前先声明,甚至需要初始化,因为变量不初始化其值为随机数。

    2K30

    从npm、npx说起,到shell

    比较特别的是,npm run 新建的这个 Shell,会将当前目录的 node_modules/.bin子目录加入PATH 变量,执行结束后,再将PATH变量恢复原样。.../node_modules/.bin/mocha test" } 由于 npm 脚本的唯一要求就是可以在 Shell 执行,因此它不一定是 Node 脚本,任何可执行文件都可以写在里面。...如果将脚本放在环境变量$PATH指定的目录中,就不需要指定路径了。因为 Bash 会自动到这些目录中,寻找是否存在同名的可执行文件。...# ~/.bashrc 或 ~/.bash_profile # 在 ~/.bin 目录下不需要再加 path $ export PATH=$PATH:~/bin $ source ~/.bash_profile...:脚本需要在执行过程中,由用户提供一部分数据,这时可以使用read命令;它将用户的输入存入一个变量,方便后面的代码使用。

    3.9K20

    linux bash环境变量简单总结

    常见的环境变量: PATH: 决定了shell将到哪些目录中寻找命令或程序 ROOTPATH: 这个变量的功能和PATH相同,但它只罗列出超级用户(root)键入命令时所需检查的目录...【注:locale -a :查看当前系统所支持的字符集】 LANG 没有设置任何LC_XXX变量时所使用的默认值。...不太常用的实用环境变量:   LD_LIBRARY_PATH 这个变量包含了一系列用冒号隔开的目录,动态链接器将在这些目录里查找库文件。   ...:后台运行的最后一个进程号 $_:在此之前执行命令或脚本的最后一个参数 引号对变量赋值的影响: 》双引号“”:允许通过$符号引用其他变量值 》单引号‘’: 禁止引用其他变量值...对于强类型语言,则必须在使用变量前先声明,甚至需要初始化,因为变量不初始化其值为随机数。 变量: 它是内存空间的一个别名,这个别名映射的是内存的存储单元的编址。

    1.9K60

    拥有此神技,脚本调试从此与 echo、set、test 说分手!

    所以为了确保 Bash 脚本的安全可靠,在生产环境中部署之前一定需要做好足够的测试以确保其行为符合我们的预期。 如何能够安全可靠的去测试 Bash 脚本呢?有人可能会说我们可以用 Docker 容器。...什么样的测试才是 Bash 脚本的单元测试? 首先,所有存在于PATH环境变量的路径中的命令都不应该在单元测试中被执行。对 Bash 脚本来说,被调用的这些命令可以正常运行,有返回值,有输出。...与其他编程语言一样,Bash 也有多个测试框架,比如 Bats、Shunit2 等,但这些框架实际上并不能隔离所有PATH环境变量中的命令。...Bach Testing Framework 的最独特的特性就是默认不会执行任何位于 PATH 环境变量中的命令,因此 Bach Testing Framework 非常适用于验证 Bash 脚本的执行逻辑...安全:因为不会执行任何外部的命令,所以即使因为 Bash 脚本中的某些错误导致执行了一个危险的命令,比如rm -rf *。Bach 会保证这些危险命令不会被执行。

    1K20

    如何在Ubuntu 16.04上从源代码安装Go

    Go 1.4现在解压缩在一个名为go的目录中,但Go的搭建脚本查找Go 1.4二进制文件,是在~/go1.4文件中查找。我们使用该mv命令重命名目录。...如果未设置该变量(默认情况下),则搭建脚本将假定该go1.4目录位于主目录中。如果要将Go 1.4移动到其他位置,可以使用GOROOT_BOOTSTRAP变量。...警告:不建议master在生产中使用Go 的开发版本(即分支)。它没有经过测试,可能存在错误。开发版本适用于应用程序测试,但仅使用已发布的版本进行生产。...第6步 - 搭建Go 要搭建go,您需要执行src/all.bash,这是源代码附带的bash脚本。该脚本将检查您是否具有所有必需的依赖项,运行一些测试并完成搭建。...执行脚本,但请注意,如果更改了Go 1.4.3二进制文件的位置,则需要添加-E标志(即sudo -E bash ./all.bash)来保留环境变量。 $ cd src $ sudo bash .

    1.3K30

    【linux】环境变量

    01.命令行参数 这段C语言程序展示了如何通过 main 函数接收和打印命令行参数 使用一个for循环遍历从0到argc-1的所有索引,argc 表示命令行传入的参数数量。...默认我们查到的环境变量是内存级的 bash在执行命令的时候,需要先找到命令,因为未来要加载 当在 Bash 或任何其他 shell 中执行一个命令时,shell首先需要找到该命令对应的可执行文件。...PATH 变量包含了一系列目录,这些目录用冒号(:)分隔,Bash 会按照这些目录的顺序去搜索可执行文件。...找到命令执行 一旦在 PATH 中的某个目录找到了匹配的可执行文件,Bash 会加载并执行它。...,添加到环境变量里面 这样直接赋值会使其他指令无法正常使用,我们这样改变了它所有路径 重新登录一次路径又恢复,所以我们说默认我们查到的环境变量是内存级的 正确方法: PATH=$PATH:/home

    7110
    领券