传递 Julia 参数以在 REPL 中执行?

JKH*_*KHA 6 bash alias read-eval-print-loop julia

我在日常工作中非常(非常!)经常这样做:

$ j7 # (alias for Julia version 1.7)
julia>
julia> ] activate .
(or similarly) (@v1.8) pkg> activate . 
Activating project at `~/MyMWE_WorkingPath`
julia> using Revise ; using RRSP # RRSP is my working module
Run Code Online (Sandbox Code Playgroud)

我想要一个别名,以便更快、更轻松地完成此例程。我每周至少这样做十次,并且会持续几个月。

理想情况下,我会做类似 j7RRSP 的操作,它是以下内容的别名:

alias j7RRSP='julia > ]activate . ; using Revise ; using RRSP'
Run Code Online (Sandbox Code Playgroud)

这是不正确的,我不知道如何做好!我知道执行 julia 文件的别名是可能的:

alias j7jl='julia somefiles.jl'
Run Code Online (Sandbox Code Playgroud)

就我而言,我正在激活一个项目,然后使用两个包:Revise(标准包),然后是我创建的 RRSP。

fre*_*kre 9

这是一种解决方案:

alias j7RRSP='julia --project=. -e "using Revise, RRSP" -i'
Run Code Online (Sandbox Code Playgroud)

标志:

  • --project=.:直接从当前目录中的项目启动,而不是使用]activate .
  • -e "...":评估代码...
  • -i:请求交互式会话,这是必需的,因为否则,由于与 结合-e,进程在评估代码后退出。


Léa*_*ris 7

另一个解决方案是使用一个与别名完全相同的函数,但具有更明智的语法和功能:

j7RRSP() {
  julia --project=. -e "using Revise, RRSP" -i "$@"
}
Run Code Online (Sandbox Code Playgroud)

作为一行:

j7RRSP(){ julia --project=. -e "using Revise, RRSP" -i "$@";}
Run Code Online (Sandbox Code Playgroud)