【问题标题】:Double click to run a shell script with a ruby script on mac双击以在 mac 上运行带有 ruby​​ 脚本的 shell 脚本
【发布时间】:2016-09-27 07:21:14
【问题描述】:

我有一个shell脚本

#!/bin/bash
echo "starting"
file="path_to_file/ruby_file.rb"
echo $file
ruby $file
echo "ended"

当我从命令行运行它时,它工作正常。

当我在 Finder 上双击它时,它不会。

我在正在打印的 ruby​​ 脚本上有一些 put,但我正在执行文件操作(重命名)并且它们没有完成。不仅如此,我还收到以下错误:

(我已取消选中结束时自动关闭会话)

-bash: shell_session_update: 找不到命令

这是结果:

/path_to_shell_script/renamer.sh; exit;
starting
/path_to_ruby_script/renamer.rb
ruby is renaming
 ruby finished renaming
ended
logout
-bash: shell_session_update: command not found -> This doesn't happen when I run it from the command line.

【问题讨论】:

    标签: ruby macos shell


    【解决方案1】:

    当 shell 脚本从 shell 运行时(即在命令行上),它具有该 shell 的上下文,包括当前目录设置和环境变量设置。

    当它从 finder 运行时,它不会。

    如果您使用任何相关文件规范,则可能找不到这些文件。

    如果您在运行时的问题只是当前目录,那么您可以在脚本本身中放置cd 命令以切换到正确的目录。

    【讨论】:

    • 谢谢。有用。 :) 我仍然收到“Sesison Ended (broken pipe)。重新启动它?”有什么想法吗?
    • 您在使用 iTerm 吗?我用谷歌搜索了“会话结束损坏的管道”并找到了这一点,这表明在最近的版本中添加了一个选项来抑制此消息:groups.google.com/forum/#!topic/iterm2-discuss/SeAdAifYVDo。您可能需要更新您的 iTerm 软件才能使用该选项。
    最近更新 更多