如何在shell脚本中扩展相对路径

2024-06-25

我正在编写一个脚本来使用 bash 在 linux 2.6 上设置环境变量。 因此该脚本包含如下命令:

export SRC_DIR=..
export LIBPATH=${SRC_DIR}/lib

问题是,当我尝试 echo $LIBPATH 时,它显示“../lib”,而不是将 SRC_DIR 扩展为完整路径。我真的希望脚本能够打印 /home/x/lib 之类的内容,而不是 ../lib。

更新 脚本应将 SRC_DIR 评估为脚本位置向上的一个目录,而不是调用脚本的当前目录


在子shell中更改目录

您可以使用一个小技巧从相对路径获取绝对路径,而无需更改当前工作目录。诀窍是移动到子 shell 中的相对路径,然后展开工作目录。例如:

export SRC_DIR=$(cd ..; pwd)

来自脚本的相对路径而不是调用目录

要从脚本位置更改为相对路径,而不是当前工作目录,您可以使用参数扩展 http://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion or the dirname公用事业。我更喜欢dirname,因为它更明确一点。这是两个例子。

# Using /usr/bin/dirname.
export SRC_DIR=$(cd "$(dirname "$0")/.."; pwd)

# Using the "remove matching suffix pattern" parameter expansion.
export SRC_DIR=$(cd "${0%/*}/.."; pwd)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在shell脚本中扩展相对路径 的相关文章

  • 无法声明接口:资源繁忙

    我正在使用 USB4Java 低级版本 并且基本上是根据这段代码工作的here http www mets blog com java usb communication usb4java 我在 Ubuntu 中工作 遇到了有关权限的问题
  • bash - 从文本文件中删除多行不同的文本

    我正在处理大量日志文件 并且大多数日志文件都有大量被记录多次的重复字符串 为了使与此类事情没有太多关系的其他人 也为我自己 轻松查看日志 我想制作一个脚本来删除一些可能对其他人造成 误报 的文本行 嘿管理员 我多次出现这些错误 gt 叹息
  • Bash IF:多个条件

    我已经尝试让这件事工作几个小时 但我无法让它工作 if P SFTP a PORT 22 P FTPS PORT 990 a PORT 21 then 有人能帮我吗 我知道多个条件可以这样写 if P SFTP PORT 22 then 但
  • H.323,如何制作一个没有媒体的简单环。该脚本遵循 Q.931 设置,但仍然无法正常工作

    谁能帮我解决这个问题吗 当我发送此请求时 我在wireshark中看到数据包将发送到1720 tcp端口中的SJPhone 但 SJPhone 仍然没有响铃 我想让它响起 无论媒体 我非常感谢您的支持 我一定缺少消息协议细节来实现这个 请给
  • PS1 定义中的条件 pwd

    我想显示当前工作目录如果我处于symlink比没有 到目前为止我已经 pwd P pwd echo 1 31m pwd P echo 1 32m pwd 将返回所需的输出 但它不能替代 w在命令提示符下 我尝试用反引号括起来 但这只会导致p
  • 如何在不需要设置 LD_LIBRARY_PATH shell 变量的情况下输入“cargo run”?

    我构建了一个 Rust 程序 通过 C 接口调用 C 函数 为了执行该程序 我必须运行 export LD LIBRARY PATH
  • Bash:将输出传输到后台进程?

    我想将一个进程放入后台 然后多次将数据传递给它 例如 cat The command I want to write into cat pid Getting the process id of the cat process echo h
  • 生成(非常)大的非重复整数序列而不进行预洗牌

    背景 我编写了一个简单的媒体客户端 服务器 我想生成一个不明显的时间值 随从客户端到服务器的每个命令一起发送 时间戳中将包含相当多的数据 纳秒分辨率 即使它不是真正准确 因为现代操作系统中计时器采样的限制 等 我想做的 在 Linux 上
  • 线程和 fork()。我该如何处理呢? [复制]

    这个问题在这里已经有答案了 可能的重复 多线程程序中的fork https stackoverflow com questions 1235516 fork in multi threaded program 如果我有一个使用 fork 的
  • PhoneGap - 构建 PhoneGap Android 应用程序在 Linux 上出现编译错误

    我在我的 linux ubuntu 12 04 机器上构建phonegap android 应用程序时遇到错误 我已经安装了nodejs 将JAVA HOME ANT HOME ANDROID HOME vars和 JAVA HOME bi
  • 如何可视化包含/指向彼此的 C 结构图?

    我正在使用Ubuntu 10 04 正在研究内核对象的编程 我遇到了一些相当复杂的结构 我很难阅读 所以我想我应该尝试找到一些可以帮助我可视化它们的工具 到目前为止我唯一能找到的是VCG http rw4 cs uni sb de sand
  • 无法在 Jenkins 管道作业中通过 DSL (groovy) 存储 sh 命令输出

    我想获得管道 Jenkins 作业中的最后构建输出并附加在电子邮件中 使用 emailext 插件 Curl 工作正常并提供正确的构建输出 但我无法存储在变量中以附加在电子邮件中 我正在使用最新的詹金斯版本 我可以看到有几个关于简单 sh
  • java轻量级调试器[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个轻量级的 java 调试器 无论是在 IDE 中还是独立的 命令行或 GUI 中 我正在使用 ant 和 vim 并且尝试过
  • 将 bash 脚本转换为 python(小脚本)

    我有一个在 Linux 环境中使用的 bash 脚本 但现在我必须在 Windows 平台上使用它 并且希望将 bash 脚本转换为可以运行的 python 脚本 bash 脚本相当简单 我认为 我尝试通过 google 转换它 但无法成功
  • x = os.system(..) 的返回值[重复]

    这个问题在这里已经有答案了 当我打字时os system whoami 在Python中 作为root 它返回root 但是当我尝试将它分配给变量时x os system whoami 它将 x 的值设置为 0 为什么 os system
  • For 循环 Bash 中的大数序列[重复]

    这个问题在这里已经有答案了 在 Bash 脚本中 我使用一个简单的 for 循环 如下所示 for i in seq 1 1 500 do echo i done 这个 for 循环工作得很好 但是 当我想使用较大数字的序列 例如 10 8
  • 对于位字段,使用 unsigned char 或 unsigned int 哪一个更好?为什么?

    我只想了解以下结构声明 哪一种更适合用于内存分配 为什么 如果是 unsigned char 和 unsigned int 那么填充又如何呢 struct data unsigned char a 3 unsigned char b 4 a
  • 从 Bash 中的字符串中删除固定前缀/后缀

    我想从字符串中删除前缀 后缀 例如 给定 string hello world prefix hell suffix ld 我如何得到以下结果 o wor prefix hell suffix ld string hello world f
  • 为什么每次运行应用程序时都必须使用导出来定义 LD_LIBRARY_PATH?

    我有一些使用一些共享库的代码 gcc 上的 c 代码 编译时 我必须使用 I 和 L 显式定义包含目录和库目录 因为它们不在标准位置 当我尝试运行代码时 出现以下错误 sync test sync test error while load
  • Linux C++ 调试器

    我正在寻找完美的 Linux C 调试器 我不期望成功 但搜索应该提供丰富的信息 我是一个非常有能力的 gdb 用户 但 STL 和 Boost 很容易压垮我的调试技能 并不是说我无法深入了解数据结构的内部结构 而是它需要很长时间 我通常会

随机推荐

  • 在引导下拉元素上使用 intro.js

    我不知道如何在下拉元素上使用 intro js 我发现了一个类似的问题 但没有答案 IntroJS Bootstrap 菜单不起作用 https stackoverflow com questions 20071122 introjs bo
  • 在 Tensorflow 中实现对比损失和三元组损失

    我两天前开始玩 TensorFlow 我想知道是否有三元组和对比损失的实现 我一直在看文档 https www tensorflow org versions r0 9 api docs python nn html losses 但我还没
  • 字体在 IE 10 中不起作用

    我完全没有成功让 IE 10 显示自定义字体 还有其他人解决这个问题吗 我可以在网上看到一些人在 IE 10 中使用字体时遇到问题 但没有找到解决方案或已确认的错误 有人有相同的经历或解决方案吗 这就是我现在所拥有的 它在 10 之前的 I
  • 返回中断处理程序后程序计数器去了哪里?

    您好 我想知道当程序从中断服务程序返回时程序计数器去哪里 我知道当中断事件发生时PC被压入堆栈 但是下一个或同一个 刚刚执行的一个 被压入堆栈的地址是什么 当我们有 first instruction interrupt event her
  • 在 SimpleDateFormat 模式字符串中使用字母字符

    是否可以在 SimpleDateFormat 模式字符串中包含字母字符 我正在尝试创建一个格式字符串 其中在时间之前包含字母 T 例如 2003 11 15T09 30 47 05 00 我目前正在使用yyyy MM ddhh mm ssZ
  • 将多个虚拟变量转换为一列[重复]

    这个问题在这里已经有答案了 我想转换一个如下所示的表 Blue Green Red Thing 1 No Yes No Thing 2 Yes No No Thing 3 Yes No No 改成这样的风格 Color Thing 1 Gr
  • 如何将redis中的数据保存到磁盘中的文件并读回redis?

    我可以在程序中写入 Redis 并从中读取 但是 关闭服务器后 我猜数据已从内存中删除 如何将redis中的数据保存到磁盘中 以便下次打开redis时 它可以打开数据 让控制台程序读取它吗 如果我的电脑突然断电重启 redis可以恢复状态吗
  • Webpack“OTS 解析错误”加载字体

    我的 webpack 配置指定应使用加载字体url loader 当我尝试使用 Chrome 查看该页面时 出现以下错误 OTS parsing error invalid version tag Failed to decode down
  • 从 JSP 文件中的会话范围 bean 访问数据

    我正在尝试在 Spring Web MVC 3 中开始使用会话范围的 bean 我将这一行放入我的调度程序配置中
  • Linq OrderBy(Byte[]) 值

    public class foo int ID get set byte sort get set public class barMaster public void FooSource return List
  • 如何在文件上传和插入数据库的同时加载 gif

    我必须先将文件加载到临时位置 然后再读取文件并将其插入数据库 但是我如何在执行所有这些操作时包含加载 gif 有人可以告诉我吗 谢谢
  • WPF 在 .NET Framework 4.0 中的 x64 上启动缓慢

    我注意到 如果我为任何 CPU x64 构建 WPF 应用程序 则与在 x86 上启动 在发布和调试模式下 相比 启动 大约 20 秒 或加载新控件所需的时间要长得多 VS 的内部或外部 即使是最简单的 WPF 应用程序也会出现这种情况 该
  • SQL 表别名 - 好还是坏? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在 SQL 中使用表别名有哪些优点和缺点 我个人会尽量避免使用它们 因为我认为它们会使代码的可读性降低 特别是在阅读大型 where and 语
  • ASP.NET MVC 最佳实施实践

    最近 我被要求完全重写和重新设计一个网站 该公司的所有者强调 他希望该网站采用最新 最先进的技术来制作 但要避免额外的成本 截至目前 我在研究 CMS 实现和使用 MVC 编写新实现之间左右为难 该网站主要是宣传册件 但需要允许访问者通过表
  • Elixir 1.3.0:String.strip/1 和 String.strip/2 API 文档缺失。

    Elixir 1 3 0 似乎不再显示 String strip 1 和 String strip 2 的文档 iex 1 gt h String strip No documentation for String strip was fo
  • Pthreads PHP:并行执行 Foreach 循环

    如何将核心 PHP 代码转换为 Pthread 代码 我的核心 PHP 代码 require once xyz php count 0 foreach sites as site require once allsite site php
  • 二进制 Blob 截断为 8000 字节 - SQL Server 2008 / varbinary(max)

    我已经从 Fluent Nhibernate 1 0 和 Nhibernate 2 1 升级到 pre 使用 NHibernate 3 0 GA 发布 1 x 并达到了我认为的回归 但我想听听是否确实如此 我正在使用 SQL Server
  • 冻结 Python 应用程序时创建更少的文件

    我正在使用 cxFreeze 冻结我的 Python 应用程序 一切似乎都按预期工作 但查看构建目录让我思考 有没有办法可以减少构建目录中的文件 目前 有一堆 PYD 文件和必要的 DLL 文件 然后我有一些配置文件 自定义 其余的内容被放
  • Scrapy - 使用蜘蛛名称同时记录到文件和标准输出

    我决定使用 Python 日志记录模块 因为 Twisted on std error 生成的消息太长 我想INFO级别有意义的消息 例如由StatsCollector在维护屏幕消息的同时写入单独的日志文件 from twisted pyt
  • 如何在shell脚本中扩展相对路径

    我正在编写一个脚本来使用 bash 在 linux 2 6 上设置环境变量 因此该脚本包含如下命令 export SRC DIR export LIBPATH SRC DIR lib 问题是 当我尝试 echo LIBPATH 时 它显示