shell脚本:shell_dir=$(cd "$(dirname "$0")";pwd)

本文介绍如何使用Shell脚本中的dirname和cd命令组合,来获取脚本所在目录的绝对路径,提高脚本的可移植性和灵活性。通过具体示例展示了如何定位脚本所在目录及其父目录,以及如何根据这些路径定位特定文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

dirname $0

在命令行下,单纯执行 $ cd `dirname $0`是毫无意义的,因为dirname $0会返回当前路径.dirname $0命令写在shell脚本里才有作用,返回这个脚本文件放置的目录,并可以根据这个目录来定位所要运行程序的相对路径。在/home/admin/test/下新建test.sh内容如下:

#!/bin/bash

cd `dirname $0`
echo `pwd`

然后返回到/home/admin/执行

sh test/test.sh

运行结果:

/home/admin/test

这样,就知道一些与当前脚本放在一起的文件相对路径,只要知道相对路径就可以根据这个目录来定位,而不用关心绝对路径。这样脚本的可移植性就提高了,扔到任何一台服务器都可以执行。


$(cd "$(dirname "$0")";pwd)

#!/bin/bash

# 定位脚本所在当前目录
BIN_FOLDER=$(cd "$(dirname "$0")";pwd)
echo $BIN_FOLDER

# 定位脚本所在父目录
PROJECT_FOLDER=$(cd "$(dirname "$BIN_FOLDER")";pwd)
echo $PROJECT_FOLDER

# 定位脚本所在父目录下的某文件
PYTHON_BIN=$PROJECT_FOLDER/.venv/bin/python
echo $PYTHON_BIN

BIN_FOLDER = $(cd "$(dirname "$0")";pwd)解析:

  1. 取当前运行脚本的所在路径:$0

  2. 取当前脚本所在路径的父目录:dirname "$0"

  3. 取返回的父目录的值:$(dirname "$0")

  4. cd到返回的父目录:cd "$(dirname "$0")"

  5. 输出地址:cd "$(dirname "$0")";pwd

  6. 取输出的地址,并赋值给BIN_FOLDER:BIN_FOLDER = $(cd "$(dirname "$0")";pwd)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值