Vai*_* MK 27 ssh command-line bash environment-variables
我有一个我经常ssh进入的主机。但我不想一次又一次地输入它。我应该为此使用环境变量还是有更好的方法?
我不介意保存存在于单个 bash 会话之外的常用变量的通用解决方案。
Ser*_*nyy 46
环境变量的目的是将信息传达给您在 shell 中启动的多个命令/进程,这些命令或进程希望在环境中存在。通常,此类变量包括选项,例如LESS将常用选项传递给lesspager 的变量,PERL5LIB用于在非标准位置查找 perl 模块,LC_LANG以传达命令应用于输出的语言。
如果 URL 供您自己与特定命令一起使用,请使用别名(例如)alias au='firefox https://askubuntu.com或函数(例如)open_url(){ firefox "$@" }打开您在命令行上作为函数位置参数提供的任意 URL。
在某些情况下,例如ssh,您可以在配置文件中定义连接属性,如Lekensteyn 的回答中所述:
定义~/.ssh/config具有以下内容的文件
Host meh
HostName meh.example.com
User admin
Port 1234
IdentityFile ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)用于ssh meh使用配置文件连接到主机。
小智 15
另外我建议创建一个别名。
在您的主目录中编辑您的.bashrc(或者可能.profile或类似的文件)。添加多个别名,例如:
alias go='ssh url1'
alias go2='ssh url2'
Run Code Online (Sandbox Code Playgroud)
然后,重新登录/重新连接并输入go或go2。
我建议结合Sergiy和Lewis 的答案以获得最大的懒惰效率:
首先创建一个主机条目ssh:
定义~/.ssh/config具有以下内容的文件
Host meh
HostName meh.example.com
User admin
Port 1234
IdentityFile ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)
现在ssh meh有效,但这可能仍然很长。有自动完成功能(在ssh[Blank] 之后),但仍然需要输入大量内容。
所以让我们也定义一个alias:
.bashrc在本地主目录中编辑您的。添加一个别名,如:
alias meh='ssh meh'
Run Code Online (Sandbox Code Playgroud)
现在,您只需meh在终端窗口中输入即可连接到“meh.example.com” 。如果您想使用更长的字符串而不是“meh”,您实际上可以使用 [Tab] 键来自动完成。
或者,如果您真的很懒,只需将单个字符定义为别名:
alias m='ssh meh'
Run Code Online (Sandbox Code Playgroud)
因此,如果您输入m并按 Enter/Return,您的 ssh 连接将立即启动!
另一种选择是使用 shell 的历史功能。您可以在 bash 中按 Ctrl-r 并键入上次 ssh 到该位置的唯一子字符串。如果没有唯一的子字符串,您可以使用最适合作为稀有子字符串的任何内容,并通过反复按 Ctr-r 直到找到它来浏览历史条目。例如,您可以输入 Ctrl-r 和“monkeys”或“codemonkeys”或“odemon”或“kong”并得到
ssh kong@codemonkeys.some-server.com
Run Code Online (Sandbox Code Playgroud)
从上次开始,希望只有在您输入整个内容的时候。
使用 shell 的历史功能,真的没有理由多次输入任何长命令。