【问题标题】:Get bash where bash script executed from [duplicate]获取 bash 从 [重复] 执行 bash 脚本的位置
【发布时间】:2020-06-01 23:55:19
【问题描述】:

我希望能够使用命令~/script_name.sh 从任何目录执行位于我的主目录中的 bash 脚本,然后在脚本中获取运行它的目录。

例如。我在目录/foo/bar/baz,执行/foo/script.sh,打印出/foo/bar/baz

pwd$0/$BASH_SOURCE 分别给我我的 shell 启动的目录和我的主目录中脚本的路径。

【问题讨论】:

  • pwd 是正确的答案。如果您认为看到其他内容,请发帖 MCVE
  • @thatotherguy 是对的。这里有一个很好的解释stackoverflow.com/a/1482133/4175515
  • 如果您添加minimal reproducible example 让其他人重现该问题,请告诉我。也就是说——pwd 或者更好的是$PWD 在这里确实是正确的答案。 (顺便说一句——将来,标记 bash sh,但不能同时标记两者;bash 主要是 POSIX sh 规范的超集,但有时它们会有所不同)。

标签: bash shell unix sh


【解决方案1】:

不要调用 external 命令pwd,而是考虑使用$PWD。如果您想防止某些恶意代码显式更改了PWD,请先执行cd .(这是一个内部命令),它将PWD恢复为正确的值。

【讨论】:

    猜你喜欢
    • 2019-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-09
    • 2014-11-08
    • 1970-01-01
    相关资源
    最近更新 更多