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

bash脚本如何知道它来源时安装的目录.运营商?

在bash脚本中,可以使用$0变量来获取脚本的路径,然后通过dirname命令来获取脚本所在的目录。以下是一个示例脚本:

代码语言:bash
复制
#!/bin/bash

# 获取脚本所在的目录
script_dir=$(dirname "$0")

# 输出目录
echo "脚本所在目录:$script_dir"

这个脚本可以在任何目录下运行,它会输出脚本所在的目录。如果脚本是通过安装包安装的,那么这个目录就是安装包的安装目录。

需要注意的是,如果脚本是通过软链接或者其他方式被调用的,那么$0变量返回的路径可能不是脚本实际所在的目录。在这种情况下,需要使用其他方法来获取实际的安装目录。

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

相关·内容

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

问: 如何Bash脚本本身中获得其所在目录? 我想使用Bash脚本作为另一个应用程序启动器。我想把工作目录改为Bash脚本所在目录,以便我可以对该目录文件进行操作,像这样: $ ....但是在以相对路径方式去执行脚本,获取目录信息是相对路径,不能满足其他需要获取绝对路径场景。 如果要获取绝对路径,可以使用如下方法: #!...$script_dir 其中第3行代码,无论从何处调用它,都将为你提供脚本完整目录路径。...测试结果如下: 另外,可以根据第一种方法结合使用 realpath 命令,也可获取脚本所在目录绝对路径: #!.../(点-斜杠),以便在bash中运行 shell脚本对编码和行尾符敏感吗

29620

理解 LinuxUnix 登录脚本

我曾经看到过一些项目的安装说明,例如RVN,这个项目建议用户创建一个.bash_profile文件,但是这样做是非常危险,根据上面提到知识我们知道,这个会改变用户shell环境。...但是它也相当复杂,类似于/etc/profile怎么从/etc/profile.d目录脚本读取配置,怎么从/etc/X11/Xsession.d/目录/etc/X11/Xsessions脚本中读取配置...在/etc/X11/Xsession.d目录所有脚本名称都以数字开头,因此所有的脚本都会按照数字顺序来读取。...如果你希望一个脚本可以找到一个私人目录路径,并且添加到你PATH中,你需要考虑这个目录是不是会移动很多东西,如果你向.profile添加代码来实现,用户需要注销然后再登录来更改用户会话期间PATH...希望你现在可以更好地了解了登录和注销脚本在Debian GNU/Linux系统上工作原理。如果你已经为这些登录和注销脚本创建、或者遇到任何特别有趣或有创新用途,请在评论中告诉我们你是如何做到

1.1K10

Go+语言第一行代码

当我看论坛给官方资料 Go+ | 带你一文全面了解Go+ ,第三章节介绍了如何安装 Go+,虽然仅是跳转到了 github-gop,但是从 Readme How to install 中,我们可以看到...:当我们克隆下来源码后,我们需要运行 all.bash 脚本,该脚本实际执行内容是 go run cmd/install.go,即使我没有学习过 go 语言,但是根据 Python 在运行脚本给我经验...通过查询 go+ 背景知识,我们知道确实和 go 语言有着千丝万缕联系。如何安装 go 语言?前往 GO语言中文网,下载 msi 包,下一步即可。2....在源码目录下运行 go run .\cmd\install.go安装过程及结果:4. 查看 go 和 go+ 版本信息:5....目前还不太了解这门语言,仅仅知道具有很强表达能力,比较简洁,同时对多核计算和并发情景有较好支持,它是一个静态类型编译型语言,但却很像是是动态类型解释型语言,这与更加偏向解释型 Python 有着很大不同

19920

3个命令行游戏--乐学乐玩Bash【Linux-Command line】

你不会认为世上存在很多教你如何使用Bash终端游戏,事实也的确如你所想。...可以通过使用cd命令将目录更改为dungeon中每个房间来探索。 在浏览目录,使用ls -F检查文件,使用cat读取文件,设置变量以收集宝藏,并运行脚本来与怪物战斗。...可以通过双击bashcrawl目录“README.md”文件来执行此操作。在Mac上,你计算机可能不知道要使用哪个应用程序打开文件。可以使用任何文本编辑器或LibreOffice。...相反,为了对新用户透明,尽可能地简单。理想情况下,Bash新用户可以从游戏中学习Bash一些基础知识,然后偶然发现游戏机制,包括使游戏运行简单脚本,并学习更多Bash。...学习Bash,享受快乐 不论你用何种途径学习Bash都是一个功能强大界面。因为无需通过GUI应用程序“middleman”界面,就使你能够指导计算机执行所需操作。

1.9K60

Bash: Command Not Found命令未找到

虽然你Linux发行版默认安装了大量命令,但不可能在系统中预安装所有命令行工具。如果你尝试运行命令不是流行常用命令,则必须使用发行版包管理器来安装apt命令,dnf命令或者yum命令。...因此,解决方案是要么安装缺少命令,要么找到一个可替代工具,该工具可以获得你所需要结果即可。 检查可执行脚本路径是否正确 这是Linux新手在运行shell脚本时常犯错误。...即使你在同一目录中并尝试仅按其名称运行可执行脚本,它也会显示错误。...这个变量有一个目录集合,这些目录有各种Linux命令二进制(可执行)文件。当你运行命令,你Linux系统shell会检查PATH环境变量以查找该命令可执行文件。...也许你已经知道Linux如何找到你要运行命令。当Linux系统shell执行你指定命令。你要么在运行时提供相对路径或者绝对路径,要么命令所在目录位置添加到PATH环境变量中。

5.6K10

批处理安装应用程序——给你一个不使用命令行自动化解决方案

我发现自己在每次“ nuke and pave”之后都重复安装了同一套软件。 于是,我找到了一种节省大量时间解决方案:编写一个简单bash脚本! ? ? 什么是Bash脚本?...它还指示脚本在出现问题停止。如果您使用单个“&”号,则即使第一个命令失败,脚本仍将继续。 我们这样做是因为snap是与apt不同软件包管理器,并且从不同来源获取软件。...通过输入cd(这意味着更改目录)和文件夹(我这儿是“ Desktop”)浏览到保存该文件位置。 要显示当前位置文件列表,请键入“ ls”。 然后执行脚本,输入“ ..../myscript”来执行你脚本 这是一个简短GIF演示: ? 如何从终端上运行脚本 您在这里看到是一个超级基本bash脚本,但是可以将它们扩展为可以节省数分钟甚至数小时东西。 ?...添加了免费(可选)非免费RPM Fusion软件库,完全更新了系统,然后安装了广泛且有用各种软件-包括开发人员相关、桌面主题和音频/视频编解码器。

1.1K20

使用 Docker 搭建 Java Web 运行环境

需要强调是,笔者并非否定虚拟化技术,而是想通过本文让更多读者了解如何使用 Docker 技术,让大家知道除了虚拟化技术以外,还有另一种替代技术,也能让应用程序隔离起来。...文件,通过安装软件。...,格式:-v : 假设我们所有安装程序都放在了宿主机/root/software/目录下,现在需要将其挂载到容器/mnt/software/目录下。...我们需要编写一个运行脚本,当启动容器,运行该脚本,启动 Tomcat,具体过程如下: 首先,创建运行脚本: vi /root/run.sh 然后,编辑脚本内容如下: #!...它与虚拟机差别在哪里?以及如何安装 Docker?如何下载 Docker 镜像?如何运行 Docker 容器?如何在容器内安装应用程序?如何在容器上创建镜像?如何以服务方式启动容器?

1.6K20

使用 Docker 搭建 Java Web 运行环境

来源:黄勇 , my.oschina.net/huangyong/blog/372491 Docker 是 2014 年最为火爆技术之一,几乎所有的程序员都听说过。...需要强调是,笔者并非否定虚拟化技术,而是想通过本文让更多读者了解如何使用 Docker 技术,让大家知道除了虚拟化技术以外,还有另一种替代技术,也能让应用程序隔离起来。...文件,通过安装软件。...我们需要编写一个运行脚本,当启动容器,运行该脚本,启动 Tomcat,具体过程如下: 首先,创建运行脚本: vi /root/run.sh 然后,编辑脚本内容如下: #!...它与虚拟机差别在哪里?以及如何安装 Docker?如何下载 Docker 镜像?如何运行 Docker 容器?如何在容器内安装应用程序?如何在容器上创建镜像?如何以服务方式启动容器?

1.2K30

nodejs写bash脚本终极方案!

◆ 前言 最近在学习bash脚本语法,但是如果对bash语法不是熟手的话,感觉非常容易出错,比如说:显示未定义变量shell中变量没有定义,仍然是可以使用,但是结果可能不是你所预期。...为了弥补这些错误,我们学会在脚本开头加入:set -u这句命令意思是脚本在头部加上,遇到不存在变量就会报错,并停止执行。...后来就开始探索,如果用node脚本代替bash该多好啊,经过一天折腾逐渐发现一个神器,Google旗下zx库,先别着急,我先不介绍这个库,我们先看看目前主流用node如何编写bash脚本,就知道为啥它是神器了...很棒,但是在编写脚本,人们通常会选择更方便编程语言。...◆ 安装 npm i -g zx 需要环境 Node.js >= 14.8.0 将脚本写入扩展名为 .mjs 文件中,以便能够在顶层使用await。

3.9K20

Windows 开发好痛苦

我手工安装了 Git,但发现安装了自己 bash、perl 和 coreutils。...这一点在意料之中(许多 Git 命令都是用 Perl 和 shell 脚本),但这已经是我系统中安装第三份 bash 了。 作为一个 NixOS 用户,这应该并不是什么大问题。...我 NixOS 上至少有 8 个不同版本 bash。但是,安装那些 bash 主要原因是我可以切换到不同版本,并回到某个过去旧系统。...然而这三个 bash 都是有用,但它们互相不知道彼此存在(而安装这些 bash 应用程序似乎也是对,它们采用了保守策略,自己安装自己 bash,减少兼容性问题)。...这并不是最好选择,但从长期支持角度来看,也是一种方案。网上建议我下载新版 OpenSSH。 我下载了 zip 包并解压,然后发现了许多二进制文件,而且没有任何说明该如何安装

1.4K50

深入了解定制 Bash | Linux 中国

Bash 在非交互模式下运行例子是,当命令和数据从文件或 shell 脚本通过 管道 传送到 Bash 。...这是用户在 Fedora 上打开终端通常会进入 shell 类型。当 Bash 以非交互模式启动 —— 就像运行脚本那样 —— 它会寻找 BASH_ENV环境变量。...另外,处理 BASH_ENV 并不会使用 PATH 变量所存储值(LCTT 译注:意即不会检索搜索路径),所以必须包含执行文件绝对路径。...你使用终端和电脑姿势,取决于你如何修改(或不修改)你点文件。 如果你很好奇自己命令行处于什么会话状态,使用下面这个脚本来判断一下。 #!...Bash 手册也是一个很好信息来源。请注意,确保你本地手册页记录了你当前运行 Bash 版本特性,因为在网上找到信息有时可能太老(过时了)或太新(你系统还没有安装)。

1.1K30

nodejs 写 bash 脚本终极方案!

前言 最近在学习bash脚本语法,但是如果对bash语法不是熟手的话,感觉非常容易出错,比如说:显示未定义变量shell中变量没有定义,仍然是可以使用,但是结果可能不是你所预期。...为了弥补这些错误,我们学会在脚本开头加入:set \-u 这句命令意思是脚本在头部加上,遇到不存在变量就会报错,并停止执行。...后来就开始探索,如果用node脚本代替bash该多好啊,经过一天折腾逐渐发现一个神器,Google旗下zx库,先别着急,我先不介绍这个库,我们先看看目前主流用node如何编写bash脚本,就知道为啥它是神器了...exec:启动一个子进程来执行命令,与spawn不同是,它有一个回调函数能知道子进程情况 execFile:启动一子进程来执行可执行文件 fork:与spawn类似,不同点是需要指定子进程需要需执行...很棒,但是在编写脚本,人们通常会选择更方便编程语言。

2.5K20

为什么执行自己程序要在前面加.

来源:公众号【编程珠玑】 作者:守望先生 ID:shouwangxiansheng 前言 在Linux中,我们执行内置命令,直接输入命令名称即可,如: $ mv a b #将a重命名为b 而在执行自己写好程序时...shell是如何运行程序 在说明清楚问题之前,我们必须了解shell是如何运行程序。首先我们必须要清楚是,执行一条Linux命令,本质是在运行一个程序,如执行ls命令,执行是ls程序。.../test.txt hello world 当然了,我们通常会在shell脚本程序来头带上下面这句: #!/bin/bash 这是告诉shell,你要用bash程序来解释执行test.txt。...将程序放到PATH路径下 第一种方法就是将我们自己程序放到PATH中路径中去,这样在shell输入hello,也能找到,例如我们将其放在/bin目录下: $ hello hello world $...总结 说到这里,想必标题问题以及下面的问题你都清楚了: 安装Python或者Jdk程序为什么要设置PATH环境变量?如果不设置,该如何运行? 除了./方式运行自己程序还有什么方式?

88040

golang源码阅读(11)GO中各个目录功能

Plan 9操作系统,从里面的文件名知道,跟include跟目录是一个意思。...通过源码安装Go,会先安装该工具。...注:安装完之后,pkg/tool/$GOOS_$GOARCH下面的pprof工具是从misc下面copy过来 四、安装脚本 通过源码安装Go相当简单(安装速度也很快),因为提供了方便脚本。...脚本在src目录下 all.bash/all.bat — 会执行make脚本和run脚本 make.bash/make.bat — 安装Go run.bash/run.bat — 测试标准库 所以,通过源码安装...这个文件作用是:运行go tool dist去安装命令,同时在安装过程中会打印出执行了该文件目录名。可见,在源码安装Go过程中,打印出大部分信息就是这个文件作用。

71730

使用Termux实现在安卓手机上写Hexo

有条件还可以通过切换流量运营商来博一下运气。 为了后续安装快捷。建议替换为清华源,复制以下指令执行: BASH 换源成功后,在 Termux 上安装 openssh,git 和 nodejs。...BASH 更换 npm 源为阿里镜像: BASH 安装 Hexo,此处实在是不推荐用户在手机上从头开始配置 Hexo,光是敲指令就能被逼疯,建议在电脑上配置好以后直接拉取源码然后 npm i 恢复。...可以使用 mixplore 或 mt管理器等任何能够访问到 system 分区文件管理器,直接搜到 /data/data/com.termux/files/home/, 然后在 home 目录下新建一个简易脚本...(此处分享我写脚本,最好还是按照脚本注释在电脑上配置好各类路径再复制过去): BASH 脚本新建完成后,回到 Termux 终端,使用指令运行脚本打开菜单页面,按照菜单指示进行配置 sshkey...hexo - 语雀实现云端富文本写作 https://zfe.space/post/554e.html TO DO Termux 安装教程 定制脚本 写作环境软件安装配置

1.9K20

一份shell“圣经”收好

来源:公众号【编程珠玑】 作者:守望先生 网站:https://www.yanbinghu.com 前言 不知道你是否在为突然想实现某个功能脚本而苦苦寻找答案,这里有一份“圣经”用来查看各种仅使用内置...那么建议你花点时间学一下,毕竟花不了你太多时间就可以让给你干活。你也可以参考这里了解一下最基本用法《这些必备shell知识你都会了吗?》 为什么要使用内置bash来实现?...使用内置bash命令可以避免一些依赖,不至于你脚本迁移到另外一个系统还需要装一些依赖,另外一方面,使用这些内置命令常常也会更加高效。 这份”圣经“是怎样?...实际上它是github上地一个星标项目,地址如下: https://github.com/dylanaraps/pure-bash-bible 目前星标近20k,列出了一些常用功能,有哪些呢,我们可以看看...举个例子,如何去掉字符串首尾元素,给了一个shell函数: trim_string() { # Usage: trim_string " example string "

94110

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

考虑到 bash 是默认 shell,你可以像这样运行一个脚本bash hello.sh 你知道这种方法优点吗?你脚本不需要执行权限。对于简单任务非常方便快速。...还有其它 shell 程序,像 ksh 、zsh 等等。如果你安装有其它 shell ,你也可以使用它们来代替 bash 。...例如,我已安装了 zsh ,并使用它来运行相同脚本: 使用 Zsh 来执行 Shell 脚本 方法 2:通过具体指定 shell 脚本路径来执行脚本 另外一种运行一个 shell 脚本方法是通过提供路径...当你使用脚本而不具体指定其绝对路径或相对路径,系统将不能在 PATH 环境变量中找到提及脚本。 为什么大多数 shell 脚本在其头部包含 #! /bin/bash ?.../script.sh 方式运行一个脚本通常会在你正在运行 shell 中运行。 有问题吗?可能会有。

3.5K20

玩转CVM之测试外网带宽

正常情况来说只要终端运营商是国内过着国外主流运营商运营商会直接和腾讯云互联,CVM出入带宽都是能达到预期。...如果客户端是一些小运营商,而云上没有做接入,此时CVM出入带宽往往由于跨运营商通信导致速度不能达标。遇到这种情况一般需要借助第三方测速工具来证明云上出入带宽是正常。...image.png 首先会对时延进行测试,该延测试是客户端到speedtest测试节点延统计,在对客户端下载带宽和上传带宽进行测试,测试完毕后会打印最终测试结果最大值。...image.png Linux系统带宽测试 由于大部分云上Linux系统不会安装桌面环境,所以在进行网络测试时候也就借助浏览器访问测速网站进行测试,本文使用Speedtest提供测试脚本可以在命令行界面进行网络测试...脚本需要还需要执行一下命令就可在bash中直接进行时延和外网出入带宽测试 chmod a+rx speedtest.py sudo mv speedtest.py /usr/local/bin/speedtest

5.5K1520
领券