我正在尝试运行
atom editor
来自bash
shell 的fish
shell ,中的。由于ide-haskell处理atom
路径解析以及其他一些标准化问题,我在bash
中运行ghc-mod
非常重要。
以下是我的观点:
#~/.config/fish/config.fish
function start-atom
bash $HOME/lib/atom/bin/Atom/atom $argv
end
但是,当我尝试从start-atom
运行fish
时,出现以下错误:
/home/athan/lib/atom/bin/Atom/atom: /home/athan/lib/atom/bin/Atom/atom: cannot execute binary file
即使我知道这个文件是正确的和可执行的。有任何想法吗?谢谢!
答案 0 :(得分:11)
当您运行bash file_name
时,这意味着您尝试将file_name
作为bash脚本运行。
请改为尝试:
bash -c '$HOME/lib/atom/bin/Atom/atom "$@"' dummy $argv
-c
表示“使用bash运行此命令”而不是“使用bash运行此脚本”。
正如Charles在评论中指出的那样,我们必须做一些调整才能将参数传递给命令。我们将它们传递给bash
,它将在提供的命令中使用它们作为位置参数,因此$@
。
答案 1 :(得分:4)
应该是:bash -c '$HOME/lib/atom/bin/Atom/atom "$@"' _ $argv
下划线将成为bash的$0
演示:
$ function test_bash_args
bash -c 'printf "%s\n" "$@"' _ $argv
end
$ test_bash_args one two three
one
two
three
如果您需要使用该bash会话加载配置,请将其设置为登录shell。
所以,底线:~/.config/fish/functions/start-atom.fish
function start-atom
bash -l -c '$HOME/lib/atom/bin/Atom/atom "$@"' _ $argv
end