【问题标题】:bash - get directory a script is run frombash - 获取运行脚本的目录
【发布时间】:2014-06-30 00:34:39
【问题描述】:

所以我正在学习一些 bash,并试图弄清楚如何获取运行脚本的目录。所以假设我有我的脚本~/scripts/bash/myscript,如果我像这样执行我的 scipt:

user@localhost ~/dir/I/need/to/run/the/script/from $ ~/scripts/bash/myscript

在我的脚本中,我如何获取正在执行它的目录,以便在这种情况下获得~/dir/I/need/to/run/the/script/from。诸如以下的快捷方式:

DIR=`pwd`
DIR="$(cd "$(dirname "$0")" && pwd)"
DIR=`dirname $0`

据我所知,它们都将脚本的路径分配给DIR,但我正在寻找运行脚本的路径。

有什么帮助吗?

谢谢!! :)

【问题讨论】:

  • pwd 应该可以工作。在你做任何cd之前一定要尽早打电话。
  • 这不是获取脚本本身的路径吗?我需要的是我的当前目录,而不是脚本的。如果没有,您能告诉我如何使用readlink 获取我的目录吗?谢谢
  • 您正在寻找术语当前工作目录,这个“运行脚本的目录”是含糊不清的。
  • "我需要的是我的当前目录"。当前工作目录是为进程定义的,而不是人或其他任何人。当您说“我的”时,您指的是哪个过程?
  • 好吧,我的错,对不起措辞。正如我所说,我正在学习,感谢您指出:)

标签: linux macos bash shell


【解决方案1】:

$PWD 变量可能正是您所需要的。

$ cat >/tmp/pwd.bash <<'END'
#!/bin/bash
echo "\$0=$0"
echo "\$PWD=$PWD"
END

$ chmod u+x /tmp/pwd.bash

$ pwd
/home/jackman

$ /tmp/pwd.bash
$0=/tmp/pwd.bash
$PWD=/home/jackman

【讨论】:

  • 你可以这样做:scriptdir=$(dirname -- "$(realpath -- "$0")")
猜你喜欢
  • 2010-12-25
  • 1970-01-01
  • 1970-01-01
  • 2010-09-12
  • 2010-09-08
相关资源
最近更新 更多