【问题标题】:Whats different when you executable a scripts in OSX?在 OSX 中执行脚本有什么不同?
【发布时间】:2012-08-02 05:40:46
【问题描述】:

我有一个问题一直在尝试解决。我想了解从命令行启动脚本并使其可执行然后从 Finder 运行它之间的区别。

因为这就是我正在经历的;

我有一个名为 trash-files 的简单脚本,其中包含以下命令:

trash ~/Downloads/*

当我从终端运行时,它按预期工作;但是,如果我在 finder 中双击 shell 脚本,我会看到:

/Users/xx/Desktop/trash-files: line 1: trash: command not found

我希望有人能告诉我为什么这不能按预期工作

【问题讨论】:

    标签: macos shell command-line-interface zsh finder


    【解决方案1】:

    trash 不是 OS X 中的标准命令。它是在您的 ~/.profile 或类似文件中定义的吗?如果是这样,则不会为非登录 shell 运行这些 shell,例如为运行脚本而创建的 shell。

    【讨论】:

    • 是的,这是在我的个人资料中定义的,有没有办法在查找器中双击它时加载您的个人资料...
    • 非登录 shell 运行 ~/.bashrc 而不是 ~/.profile。您可以将if [ -f ~/.profile ]; then . ~/.profile; fi 添加到您的 ~/.bashrc 中(警告:这意味着它有时会重复运行,因此如果您执行添加到 PATH 之类的操作,它可能会变得很长。或者,您可以将该命令放在开头脚本...但我真正推荐的是编写脚本,这样它就完全不依赖于您的 .profile 设置。
    【解决方案2】:

    如果你使用自制软件,你可以运行

    brew install trash
    

    这将安装必要的脚本以使trash 命令以您期望的方式工作。

    【讨论】:

    • 我刚刚遇到了同样的问题,这成功了。如果您在 OS X 上进行开发,您可能应该使用 Homebrew。
    【解决方案3】:

    您的主文件夹位置中有一个文件夹,名为

    .Trash
    

    文件夹名称前面的“点”使其在查找器中搜索时隐藏。您必须使用终端执行以下命令:

    cd ~/
    ls -la
    

    这会将目录更改为当前登录用户的主文件夹,然后第二个命令将列出文件并显示隐藏文件。然后你可以运行:

    rm .Trash/*
    

    这将删除扩展坞上垃圾箱内的所有内容。 因此,从 /Applications 文件夹中打开 TextEdit,转到“格式”并将其设为“纯文本”。粘贴在下面的两行中。

    #!/bin/sh
    rm ~/.Trash/*
    

    将文件另存为“emptyTrash.sh”(取消选中使用 txt 扩展名)。将其保存到您的桌面或任何您想要的位置。然后打开终端,cd(更改目录)到文件所在的位置并运行此命令以使脚本可执行:

    chmod +x emptyTrash.sh
    

    然后你可以通过cd(更改目录)执行脚本到脚本所在的路径,然后运行:

     ./emptyTrash.sh
    

    就是这样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-06
      • 2017-01-10
      • 1970-01-01
      • 1970-01-01
      • 2013-09-13
      相关资源
      最近更新 更多