Bash脚本在OS X中的绝对路径

26 浏览
0 Comments

Bash脚本在OS X中的绝对路径

我正在尝试获取在OS X上当前正在运行的脚本的绝对路径。

我看到许多回复使用readlink -f $0去获取。但是由于OS X的readlink与BSD的相同,因此它根本不起作用(它可以在GNU的版本中使用)。

有没有现成的解决方案呢?

admin 更改状态以发布 2023年5月23日
0
0 Comments

有一个realpath() C函数可以完成这项工作,但我没有看到可用于命令行的任何东西。这里是一个快速而肮脏的替代品:

#!/bin/bash
realpath() {
    [[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}"
}
realpath "$0"

如果路径开头是/,则直接打印路径。否则,它必须是相对路径,所以需要在前面添加$PWD# ./部分从$1的前面删除./

0
0 Comments

这三个简单的步骤将解决此问题以及许多其他 OS X 问题:

  1. 安装 Homebrew
  2. brew install coreutils
  3. grealpath .

(3) 可以更改为 realpath,请参见 (2) 输出

0