在OS X 10.9.5中
我写了一个Shell脚本(通过vim)。保存并导航到此脚本和
sh code.sh
它运行完美(在iTerm& Total Terminal中)。
同一目录中的相同命令通过Mac Automator始终产生ERROR。为什么呢?
在Automator和终端。 echo $SHELL
/bin/bash
为什么不能通过Automator运行一个shellcript。
答案 0 :(得分:3)
我怀疑它是cd Desktop
位。你可以尝试:
(cd ~/Desktop; sh code.sh)
然而:
您应该code.sh
可执行,因此您不需要使用sh
调用它。这是通过chmod 0755 code.sh
完成的。
如果您需要shell脚本从某个目录(即脚本所在的目录)开始工作,那么将其构建到脚本中,以便只用~/Desktop/code.sh
调用它:
#!/bin/bash
dir=$(dirname $0)
cd $dir
# do work
例如:
➜ ~ cat tmp/code.sh
#!/bin/bash
dir=$(dirname $0)
cd $dir
ls -l
➜ ~ chmod 0755 tmp/code.sh
➜ ~ tmp/code.sh
total 64
drwxr-xr-x 6 andy staff 204 Feb 22 18:53 Archives
drwxr-xr-x 11 andy staff 374 Jun 18 13:59 DerivedData
-rw-r--r-- 1 andy staff 225 May 20 13:44 MyFirstProgram.X
-rwxr-xr-x 1 andy staff 3072 May 20 13:44 MyFirstProgram.exe
drwxr-xr-x 3 andy staff 102 Jan 6 2014 bug_reports
-rwxr-xr-x 1 andy staff 43 Aug 6 14:15 code.sh
-rw-r--r-- 1 andy staff 11539 May 20 08:33 iOS_Team_Provisioning_Profile_.mobileprovision
-rw-r--r-- 1 andy staff 1438 May 20 08:40 ios_development.cer
-rwxr-xr-x 1 andy staff 272 Aug 5 08:55 script.sh
答案 1 :(得分:3)
通过在当前代码上方添加以下代码可以解决此问题:
export PATH=/usr/local/bin:$PATH
答案 2 :(得分:2)
创建两个输出文件:
在Automator中:
env > ~/Desktop/file_1.txt
在iTerm中:
env > ~/Desktop/file_2.txt
diff -y ~/Desktop/file_1.txt ~/Desktop/file_2.txt
而且,瞧,有很多不同之处!
插入差异,例如export LANG=de_DE.UTF-8
到脚本,它的工作原理!