是否可以创建一个 bash 脚本而不是键入所有这些命令?

是否可以创建一个 bash 脚本而不是键入所有这些命令?

每次我想在学校启动 cad 时,我都会输入这些命令。

ssh -X naum.ad.liu.se
tcsh
source /sw/defaults/dotfiles/.tcsh rc
module load kurs/eks
module load TSEK06
source .TSEK06_rc
cad

尝试 muru 建议的解决方案给了我

source: Too few arguments.
bash: line 1: module: command not found
bash: line 2: module: command not found
.TSEK06_rc: line 2: setenv: command not found
.TSEK06_rc: line 3: setenv: command not found
.TSEK06_rc: line 4: setenv: command not found
.TSEK06_rc: line 5: /cshrc/tcshrc: No such file or directory
bash: line 4: cad: command not found

答案1

一件简单的事情就是在您要 ssh 连接的服务器上创建一个脚本:

将其保存runcad.sh在服务器上(使用ssh或类似的方法filezilla):

#!/bin/tcsh
source /sw/defaults/dotfiles/.tcshrc
module load kurs/eks
module load TSEK06
source .TSEK06_rc
cad

然后使用 使其可执行chmod +x runcad.sh

理论上,应该可以:

ssh -X naum.ad.liu.se ./runcad.sh

在您的计算机上,您甚至可以为此创建一个别名:

alias cad="ssh -X naum.ad.liu.se ./runcad.sh"

答案2

这里涉及到三个shell:

  1. 您的初始 shell,您可以在其中输入:

    ssh -X naum.ad.liu.se
    
  2. shell 由 SSH 启动,您可以在其中键入:

    tcsh
    
  3. 以及您刚刚启动的 tcsh,您可以在其中输入:

    source /sw/defaults/dotfiles/.tcsh rc
    module load kurs/eks
    module load TSEK06
    source .TSEK06_rc
    cad
    

如果您将所有这些行转储到脚本中并运行它,您的初始 shell 将运行所有这些行。

如果您只需要启动cad并且不需要交互式 shell,您可以将其压缩为由初始 shell 运行的单个命令:

ssh -X naum.ad.liu.se tcsh -c 'source /sw/defaults/dotfiles/.tcsh rc
module load kurs/eks
module load TSEK06
source .TSEK06_rc
cad'

并将其放入脚本中。这告诉 SSH 运行tcsh -c '...',这告诉 tcsh 将以下部分-c作为命令运行。

相关内容