如何在任何目录中使鱼脚本可执行?

时间:2015-09-27 01:51:19

标签: linux path fish

几个月前我转向了Ubuntu,除了基本/经常使用的命令之外,还没有很多unix和fish的经验。对于我正在服用的C类,我经常需要SSH到我的大学Zeus运行的远程linux机器上。 ssh到它的命令有点冗长,我希望能够用鱼脚本更快地完成这个过程。

我写了一个名为“zeus.fish”的文件,它本质上只是调用我的ssh命令,以及其他一些东西。目前我只能通过在文件目录中调用“fish zeus.fish”来运行它。我希望能够在任何目录中运行脚本,就像任何其他命令一样。 IE只是输入“zeus”会尝试将我登录到远程机器。我假设我必须用PATH做点什么。我怎样才能做到这一点?谢谢!

3 个答案:

答案 0 :(得分:3)

我认为这应该有用。

将其添加到脚本的第一行:
#!/bin/fish
这样它就知道用鱼来执行你的脚本。否则你必须使用./scriptname或fish scriptname来表示你想要鱼来执行它。

删除.fish的结尾,如果你想通过" zeus"来调用它。

将文件添加到路径中。在你的 .fishrc 中,写一下:

export PATH=XXX:$PATH

好的,所以我从未用过鱼。好像他们不使用.fishrc,把它放到你的.bashrc中。据我所知,这是~/.config/fish/config.fish。实际上你必须写的是

set -x PATH $PATH XXX

XXX作为文件的路径,例如将其复制到主目录中名为bin的文件夹中。那就是 set -x PATH $PATH $HOME/bin

最后但并非最不重要的是,通过写入来使文件可执行:
chmod +x FILENAME


但是,对你来说,别名似乎是一个更简单的解决方案。 在你的鱼相当于.bashrc中,你可以这样做:

function zeus
ssh username@server
end

这似乎是别名的鱼。如果它只是1行很长,你可以这样做。在函数内部有行。现在你可以打电话给" zeus"来自任何地方。

答案 1 :(得分:3)

您可以创建一个可执行文件并将其放在$ PATH中的某个位置。但是,最简单的方法是创建zeus函数。 fish函数就像其他语言中的函数:一些命名的代码块。

  1. 运行此:function zeus; your_long_command_goes_here ; end
  2. 运行funcsave zeus以永久保存
  3. 现在zeus将运行该命令。

    这样做会将文件zeus.fish放入~/.config/fish/functions/。当然,您也可以手动执行此操作。

答案 2 :(得分:1)

ridiculous_fish的回答(显然)是完全正确的,但实际上在我看来有点复杂。

funced zeus; and funcsave zeus

将一次执行相同的操作,在第一个命令中启动(空)交互式函数定义提示,在编辑完成时立即保存它。如果已经存在该名称的功能,它将显示在编辑器中,因此可以轻松地连续调整功能,而无需深入研究(甚至考虑存在)fish配置目录。 我在拾取shell时所做的第一个功能之一是#34; func",它正好进行了这两个调用(因为我很少编辑函数而不想保存我的更改)

对于简单的ssh内容和其他oneliner,它们不接受任何输入或输入($ argv)肯定只是附加在行尾,

alias zeus='ssh ...'; and funcsave zeus

也会这样做。任何进一步的编辑都必须经过修改。