首页
学习
活动
专区
工具
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"来更改目录 为什么在可执行文件或脚本名称之前需要.

24020

理解 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.1K10

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.5K10

深入了解定制 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.4K20

NO.3 Shell脚本

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

83620

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.3K20

教你写出健壮可靠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.5K10

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.5K20

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 是一样!

64030

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.8K20

linux bash环境变量简单总结

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

1.8K30

拥有此神技,脚本调试从此与 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

linux bash环境变量简单总结

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

1.8K60

如何在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.2K30
领券