繁体   English   中英

Mac OS X中的Shell脚本从主目录运行?

[英]Shell Scripts in Mac OS X run from home directory?

我是Windows和Linux的长期用户,并且在Mac OS X上编写shell脚本有一些奇怪的经历。特别是,我可以编写脚本并从终端运行它们,但每次我尝试从Finder运行一个它始终从用户的主目录而不是脚本所在的目录执行。 也就是说,如果脚本位于

~/path/to/the/script.sh

它总是耗尽~ 在过去,我不得不问我更多精通Mac的朋友如何解决这个问题,而且他们经常使用一些非常糟糕的技术来做到这一点,但我认为没有任何理由可以解决这个问题。

我的问题是 - 有没有一种简单的方法可以在Mac OS X中编写一个shell脚本,当在Finder中双击时,它会用完它所在的目录?

这种行为似乎与我一致。 它继承了您的finder实例环境,该环境将根植于您的主目录。

但是,修复起来并不难。

cd "$(dirname "$0")"

应该做的伎俩ala:

richh-desktop % fullname.sh 
/home/richh/bin
richh-desktop % cd .. 
richh-desktop % fullname.sh 
/home/richh/bin
richh-desktop %        

如果您希望脚本在其所在的目录中运行,则脚本必须更改其工作目录。 鉴于您的示例是用bash编写的,我将使用bash示例进行响应。 $ _值设置为当前脚本的绝对路径。 您可以通过运行man bash找到更多信息

#!/bin/bash

PROGPATH=$(dirname $_)
cd $PROGPATH

# Do your stuff here

这将取决于脚本为您更改目录。 查看此页面

$0的目的是解决这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM