linux - 通过 ssh 连接找不到 Bash、别名/自定义函数

标签 linux bash shell ssh

我有一台计算机 A(kali linux),我在 bash_aliases 中为用户“test”定义了一些别名和函数。 我可以在计算机 A 上使用这些别名/函数,没有任何问题。

在计算机 B 上,我使用 SSH 命令连接到 A,并尝试执行我定义的别名/函数。但我收到错误“bash:myaliasA:找不到命令”

Here我发现我必须添加“shopt -s Expand_aliases”命令。

我将其添加到计算机 A 的 .bashrc(以及源 .bashrc)中,但仍然遇到相同的错误(未找到命令)

我将其添加到计算机B的.bashrc(和源.bashrc)中,同样,当我使用ssh连接时,我仍然得到“命令未找到”

我不明白问题出在哪里:/

在计算机 A 中,当我运行命令“shopt”时,我得到:

...
execfail        off
expand_aliases  on
extdebug        off
...

在计算机 B 中也是如此:

...
execfail        off
expand_aliases  on
extdebug        off
...

从我的计算机 A,我可以毫无问题地执行所有别名/函数。

从我的计算机B,当我执行此命令时:

ssh userA@ipofcomputerA -p xxxx "alias"

该命令不返回任何内容

但是如果我执行:

ssh userA@ipofcomputerA -p xxxx "shopt"

我明白了:

...
execfail        off
expand_aliases  off
extdebug        off
...

expand_aliases 设置为关闭!

所以,我测试一下:

ssh userA@ipofcomputerA -p xxxx "shopt -s expand_aliases ; shopt ; myaliasA"

ssh userA@ipofcomputerA -p xxxx "shopt -s expand_aliases ; shopt ; source .bashrc ; myaliasA"

通过这两个命令,我得到:

...
execfail        off
expand_aliases  on
extdebug        off
...

但我得到“bash:myaliasA:找不到命令”

我要疯了x)哈哈

最佳答案

确保在 ssh 时使用与配置相同的 shell,并尝试重置以重新加载 .bashrc 文件。

顺便说一句,实现此目的的一个好方法是打开一个新的 tmux session ,并在每次 ssh 进入服务器时附加到它。

关于linux - 通过 ssh 连接找不到 Bash、别名/自定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39219806/

相关文章:

linux - 我可以使用其他发行版的内核升级我的内核吗?

linux - 如何使用 awk 创建包含字段范围的 csv 文件

linux - 将内容传递给 EDITOR 并在退出后获取结果(例如 git/svn commit)

bash - 如何将列表作为环境变量传递给 Terraform 使用?

regex - 选择奇数列,然后将连续行的字段放在一起

linux - 我应该在哪里_append Yocto bitbake 任务来创建工作文件夹符号链接(symbolic link)?

linux - Linux 中的/tmp 能否填满?

python - 修改 python 守护进程脚本,停止不会返回 OK(但会杀死进程)

bash - 无法在Centos 7中安装docker-machine

linux - 在两个逗号之间抓取数据