首页
学习
活动
专区
工具
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脚本对编码和行尾符敏感吗

34920

理解 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.2K10
  • 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 有着很大不同

    21220

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

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

    2K60

    使用 Docker 搭建 Java Web 运行环境

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

    1.6K20

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

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

    1.1K20

    Bash: Command Not Found命令未找到

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

    5.8K10

    使用 Docker 搭建 Java Web 运行环境

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

    1.3K30

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

    nodejs 写 bash 脚本终极方案!

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

    2.6K20

    深入了解定制 Bash | Linux 中国

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

    1.1K30

    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的过程中,打印出的大部分信息就是这个文件的作用。

    75730

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

    来源:公众号【编程珠玑】 作者:守望先生 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环境变量?如果不设置,该如何运行? 除了./方式运行自己的程序还有什么方式?

    89540

    使用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 安装教程 定制脚本 写作环境软件安装配置

    2K20

    一份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 "

    96010

    玩转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

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