我试图ssh
在登录时自动更改到特定目录。我尝试使用以下指令使该行为正常工作~/.ssh/config
:
Host example.net
LocalCommand "cd web"
Run Code Online (Sandbox Code Playgroud)
但是每当我登录时,我都会看到以下内容:
/bin/bash: cd web: No such file or directory
Run Code Online (Sandbox Code Playgroud)
尽管web
我的主目录中肯定有一个文件夹。即使使用绝对路径也会给出相同的消息。需要明确的是,如果我cd web
在登录后输入,我会进入正确的文件夹。
我在这里缺少什么?
编辑:
引号/绝对路径的不同组合给出不同的错误信息:
LocalCommand "cd web"
/bin/bash: cd web: No such file or directory
LocalCommand cd web
/bin/bash: line 0: cd: web: No such file or directory
LocalCommand cd /home/gareth/web
/bin/bash: line 0: cd: /home/gareth/web: Input/output error
Run Code Online (Sandbox Code Playgroud)
这让我认为引号不应该在那里,并且发生了另一个错误。
小智 85
这有效:
ssh server -t "cd /my/remote/directory; bash --login"
Run Code Online (Sandbox Code Playgroud)
如果目录不存在,则创建一个目录:
ssh server -t "mkdir -p newfolder; cd ~/newfolder; pwd; bash --login"
Run Code Online (Sandbox Code Playgroud)
如果您不添加bash
到路径的末尾,则在cd
命令运行后退出。如果你不添加,--login
那么你~/.profile
就不是来源。
sob*_*3ch 60
~/.bash_profile
cd /path/to/your/destination
/path/to/your/destination
BMD*_*Dan 44
cd 是一个内置的 shell。LocalCommand 执行如下:
/bin/sh -c <localcommand>
Run Code Online (Sandbox Code Playgroud)
您想要做的事情无法通过 SSH 真正完成;您需要以某种方式修改外壳,例如通过 bashrc/bash_profile。
<近十年后编辑...>
LocalCommand
反正不是你想要的 那是在你的机器上运行的。你要RemoteCommand
。这样的事情对我有用:
/bin/sh -c <localcommand>
Run Code Online (Sandbox Code Playgroud)
您是否在 ssh 配置中启用了该指令?
PermitLocalCommand yes
Run Code Online (Sandbox Code Playgroud)
默认值为no
,在这种情况下您的LocalCommand
指令将被忽略。
或者,您是否尝试过将命令添加到您的.bashrc
文件中?
小智 5
当您需要 ssh 并覆盖默认的 .bashrc 文件时,更强大的解决方案。这在远程服务器环境有多个文档根并被多个用户使用的情况下很有用。
alias ssh_myserver='ssh server_name -t "echo cd /path/to/desired/dir>/tmp/.bashrc_tmp; bash --rcfile /tmp/.bashrc_tmp"'
Run Code Online (Sandbox Code Playgroud)
更详细:
.bashrc_tmp
的文件/tmp
在远程服务器上的目录与内容cd /path/to/dir
bash
使用步骤 1 中指定的配置文件执行。这允许切换到所需的目录并抑制 default .bashrc
。alias
,因此在 ssh 客户端命令提示符下它可以被称为ssh_myserver
小智 5
所以我搜索了很多网站(stackoverflow,这个),但没有找到我想要的。我最终创建了自己的 shell 脚本。我把它贴在这里。您也可以将其复制到 $PATH 中的目录。
#!/bin/bash
ssh -t <username@hostname> "cd ~/$1; exec \$SHELL --login"
Run Code Online (Sandbox Code Playgroud)
所以在这之后。我愿意:
connect <foldername>
Run Code Online (Sandbox Code Playgroud)
注意:更改路径变量后,您可能需要注销并重新登录
归档时间: |
|
查看次数: |
123837 次 |
最近记录: |