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

Unix shell脚本找出脚本文件所在的目录?

在Unix shell脚本中,要找出脚本文件所在的目录,可以使用以下方法:

基础概念

在Unix-like系统中,每个进程都有一个当前工作目录(current working directory),可以通过pwd命令查看。而脚本文件所在的目录通常是脚本被执行时的当前工作目录,但也可以通过脚本来动态获取。

相关优势

  • 灵活性:脚本可以在不同的目录下执行,而仍然能够准确地找到自身的位置。
  • 可移植性:这种方法不依赖于特定的环境变量或系统配置,因此在不同的Unix-like系统上都能可靠工作。

类型

  • 内置变量:使用Shell内置变量。
  • 命令替换:通过执行外部命令并捕获其输出来获取信息。

应用场景

  • 脚本自定位:当脚本需要引用自身所在目录下的其他文件时。
  • 安装脚本:在安装过程中确定脚本的位置,以便正确地部署文件。

示例代码

以下是一个简单的Shell脚本示例,用于找出并打印脚本所在的目录:

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

# 方法1:使用内置变量$0
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"

# 方法2:使用readlink命令
# SCRIPT_DIR="$(dirname "$(readlink -f "$0")")"

echo "脚本所在的目录是: $SCRIPT_DIR"

解释

  • dirname "$0":获取脚本文件路径的目录部分。
  • cd "$(dirname "$0")" && pwd:先切换到脚本所在的目录,然后使用pwd打印出该目录的绝对路径。
  • readlink -f "$0":获取脚本文件的绝对路径,然后使用dirname获取目录部分。

参考链接

通过上述方法,可以确保脚本在不同的执行环境中都能准确地找到自身所在的目录。

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

相关·内容

  • UNIX 入门指南 – 什么是 Shell 脚本

    Shell 是用户访问 Unix 操纵系统接口。它接收用户输入,然后基于该输入执行程序。程序执行完后,结果会显示在显示器上。 Shell 就是运行指令、程序和 Shell 脚本运行环境。...Bourne shell通常是安装在大多数版本 Unix /bin/sh 目录。由于这个原因,在不同版本 Unix 上也会选择这种 Shell 来编写脚本。...Shell 脚本有条件语句(A 大于 B)、循环语句、读取文件和存储数据、读取变量且存储数据,当然,Shell 脚本也包括函数。 Shell 脚本和函数都是翻译型语言,所以他们并不会被编译。...在后面的部分,我们会尝试写一些脚本。他们是一些写有命令简单文本文件脚本例子 假设我们创建一个名为 test.sh 脚本。注意所有脚本后缀名都必须为 .sh。...注意:如果想要执行当前目录脚本,需要使用如下方式 .

    1K00

    shell脚本逻辑判断,文件目录

    shell脚本逻辑判断: 逻辑判断表达式:if [ $a -gt $b ]; if [ $a -lt 5 ]; if [ $b -eq 10 ]等 -gt (>); -lt(=);...a=1 那么 a 就不>3 所以就不满足条件,就是else 第三种格式:if …; then … ;elif …; then …; else …; fi 文件目录属性判断: 【 if file 】 判断是否是普通文件...,切存在 【-d file 】判断是否是目录,且存在 【 -e file 】判断文件目录是否存在 【 -r file 】判断文件是否可读 可写 可执行 = 类似 判断不同写法:【 -f $f 】||...,或者被删除的话,脚本就会运行出错,出现bug 应该加上一个判断条件 #!...: 在网卡系统服务脚本中,如,/etc/init.d/iptables中就用到了case 在case中,可以在条件中使用“|”,表示或意思 输入一个同学分数,判断成绩是否及格,优秀。

    1.4K50

    如何使用Shell脚本判断HDFS文件目录是否存在

    ---- 1 文档编写目的 本文主要讲述如何使用Shell脚本判断HDFS文件目录是否存在,算是一个小技巧吧,这几天做PoC时候感觉还挺有用。...Shell脚本测试 3.1 测试路径是否存在 3.2 测试目录是否存在 3.3 测试文件是否存在 4....比如判断HDFS上某个文件目录是否存在,可以执行如下命令: hadoopfs -test -d $path #判断目录是否存在 hadoopfs -test -e $path #判断路径(文件或者目录...)是否存在 3 Shell脚本测试 3.1 测试路径是否存在 1、准备测试目录,包含一个文件和一个文件夹 [root@bigdata60 ~]# hadoop fs -ls /user/wdtestFound...删除目录文件等操作,当然还有一些更高级玩法,这里就不演示了。

    5.6K20

    使用Shell脚本遍历子目录下所有文件方法

    最近博客进行了搬家,CDN源发生改变,想着在CDN上将博客所有图片刷新预热一遍,那么问题来了,刷新预热需要得到所有图片地址,于是直接使用Shell脚本递归遍历wp-content/uploads目录先得到图片文件路径...创建Shell脚本 使用vi编辑器,先创建一个vi traveDir.sh文件,复制下面的脚本代码: #!.../traveDir.sh /xxx/wp-content >> 1.txt 后续操作 导出文件路径可能是/data/wwwroot/xiaoz.me/wp-content/uploads//2019/...11/snipaste_20191110_102750.png这个样子,直接使用文本工具,将/data/wwwroot/xiaoz.me/批量替换为您自己域名,然后将URL提交到CDN服务商进行刷新预热...总结 脚本批量导出文件路径 文本工具将站点根目录批量替换为自己域名 提交URL刷新 脚本比较简单,网上一搜一大把,此文参考了:使用Shell遍历目录及其子目录所有文件方法

    1.6K20

    shell脚本文件加密

    shell脚本         welcome.sh.x 是二进制格式加密shell脚本         welcome.sh.x.c 是welcome.sh文件C源代码。...可以使用file命令查看文件类型:         [root@localhost scripts]# file welcome.sh         welcome.sh: POSIX shell...脚本:         现在,让我们执行加密Shell脚本,确保能够运行:         [root@localhost scripts]# ....即在这个到期日期之后,当有人尝试执行Shell脚本时,将收到错误消息。使用shc -e选项创建一个新加密Shell脚本,指定到期日期。到期日期以dd/mm/yyyy 格式指定。        ...# 删除之前创建.x , .x.c文件         [root@localhost scripts]# rm -rf welcome.sh.x*         # 创建带有过期时间加密脚本

    1.5K20

    shell脚本】$ 在shell脚本使用

    shell脚本中 '$' 与不同符号搭配其表示意义也会不同 特殊标志符 含义 $0 当前脚本文件名 $n 传递给脚本或函数参数。n 是一个数字,表示第几个参数。...例如,第一个参数是$1,第二个参数是$2 $# 传递给脚本或函数参数个数 $* 传递给脚本或函数所有参数 $@ 传递给脚本或函数所有参数 $?...上个命令退出状态 $$ 当前Shell进程ID $() 与 `(反引号) 一样用来命令替换使用 ${} 引用变量划分出边界 注释:$* 和 $@ 都表示传递给函数或脚本所有参数,不被双引号(" "...)包含时,都以"$1" "$2" … "$n" 形式输出所有参数。...但是当它们被双引号(" ")包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 形式输出所有参数

    6.2K20

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

    问: 如何从Bash脚本本身中获得其所在目录? 我想使用Bash脚本作为另一个应用程序启动器。我想把工作目录改为Bash脚本所在目录,以便我可以对该目录文件进行操作,像这样: $ ....但是在以相对路径方式去执行脚本时,获取目录信息是相对路径,不能满足其他需要获取绝对路径场景。 如果要获取绝对路径,可以使用如下方法: #!...测试结果如下: 另外,可以根据第一种方法结合使用 realpath 命令,也可获取脚本所在目录绝对路径: #!...编程中$(cmd) 和 `cmd` 之间有什么区别 为什么我不能在脚本中使用"cd"来更改目录 为什么在可执行文件脚本名称之前需要..../(点-斜杠),以便在bash中运行它 shell脚本对编码和行尾符敏感吗

    33720
    领券