OSX Bash Shell脚本无法运行

时间:2013-09-17 14:25:23

标签: macos bash

我有一个非常基本的shell脚本应该在用户登录时运行。为实现这一目标,我从本主题的第一个答案开始遵循Automator指南:Running script upon login mac

但不知何故没有任何反应。我还尝试使用脚本编辑器创建一个应用程序,do shell script /blabla/git_credentials.sh响应权限被拒绝。

我在这里看不出什么错误。

哦,这是剧本:

echo ""
echo "Setup Git Credentials"
echo "*********************"
echo "Please enter your first name: "
read fname
echo "Please enter your last name: "
read lname
echo "Please enter your mail address: "
read email
git config --global --remove-section user
git config --global user.name "$fname $lname"
git config --global user.email $email
echo "Credentials set." 

编辑:我刚刚发现脚本是在登录时运行的,但它既没有打开终端也没有等待我的用户输入,我在每次启动后都只有一个空的Git配置。我使用脚本编辑器do shell script "$HOME/git_credentials.sh"实现了这个'并将其保存为应用程序,然后将其放入登录项中。

3 个答案:

答案 0 :(得分:3)

问题是你的Automator的shell脚本没有连接到STDIN(即你的键盘)。它可以运行shell脚本,但由于没有终端,所以没有办法传递它。

您需要做的是运行Automator操作: 询问文字 以获取您的输入。

我发现我必须做的是 询问文字 ,然后 设置变量的值 。我为每个我想要的变量做这个。

获得所需的所有变量后,我会为每个变量运行 获取变量的值 。这会将变量放入$*以供shell脚本使用。

现在,您可以使用Pass Input 作为参数 执行Automator操作 运行Shell脚本 。您可以将其称为$1$2

我建议用一个简单的脚本尝试这个,然后查看它是否有效。问题是整个事件可能在子shell中执行,因此一旦automator操作结束,您将丢失已设置的变量的值。我对Automator没有足够的经验来确切知道它是如何工作的。

答案 1 :(得分:1)

我怀疑你的脚本目前不可执行。

尝试通过运行来解决此问题: chmod +x /blabla/git_credentials.sh

chmod 755 /blabla/git_credentials.sh

答案 2 :(得分:0)

或者您在脚本顶部缺少#!/bin/bash?或者这只是它的一部分?