我正在尝试获取OS X上当前正在运行的脚本的绝对路径。
我看到很多回复都是关于readlink -f $0
的。然而,由于OS的readlink
和BSD是一样的,它就是不能工作(它可以与GNU的版本一起工作)。
有没有开箱即用的解决方案?
发布于 2010-08-26 12:42:52
有一个realpath()
C函数可以完成这项工作,但我在命令行上看不到任何可用的东西。这里有一个快速而肮脏的替代方案:
#!/bin/bash
realpath() {
[[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}"
}
realpath "$0"
如果路径以/
开头,则会逐字打印该路径。如果不是,它必须是一个相对路径,所以它将$PWD
放在前面。#./
部件从$1
的前面剥离了./
。
发布于 2017-08-01 00:16:08
Python解决方案的一个命令行更友好的变体:
python -c 'import os, sys; print(os.path.realpath(sys.argv[1]))' ./my/path
发布于 2015-06-12 12:45:33
我正在寻找一种在系统配置脚本中使用的解决方案,即在安装Homebrew之前运行。如果没有合适的解决方案,我只能将任务转移到跨平台语言,例如Perl:
script_abspath=$(perl -e 'use Cwd "abs_path"; print abs_path(@ARGV[0])' -- "$0")
更常见的情况是,我们实际需要的是包含目录:
here=$(perl -e 'use File::Basename; use Cwd "abs_path"; print dirname(abs_path(@ARGV[0]));' -- "$0")
https://stackoverflow.com/questions/3572030
复制相似问题