mkdir
我的目的是在远程主机上使用。
ssh
在 Ubuntu 上,来自 BSD 的手册页中写道
If command is specified, it is executed on the remote host instead of a
login shell.
该命令将是以下命令末尾的命令:
ssh user@remoteHost command
对于我的目的,命令将是mkdir --parents path/folder
。“它在远程主机而不是登录 shell 上执行”这句话的意义是什么?
这是什么意思?这是否意味着使用了非登录 shell?我的理解是,登录 shell 和非登录 shell 都涉及.bashrc
,因此区别在于配置文件不是为非登录 shell 提供的。为什么我们要忽略的配置文件user
?
答案1
是不是意味着使用了非登录shell?
是的。(不过,这取决于您所说的“登录 shell”是什么意思。)
我的理解是,登录和非登录 shell 都涉及 .bashrc,因此区别在于配置文件不是来自非登录 shell。
不正确。登录 bash 读取.profile
,而 Ubuntu 的.profile
源代码.bashrc
。非登录、交互式 bash 读取.bashrc
。非登录、非交互式bash 调用不会读取.bashrc
(或者.profile
,就此而言)。
运行 时ssh foo command
,命令由非交互式 shell 运行。但是,SSH 运行的非登录 shell 是特殊情况,而 bash 读取.bashrc
。其他 shell 可能会读取或不读取各自的 rc 文件,因此对于某些 shell 来说,可能根本不读取任何配置文件。Bash 并不是所有 shell 的终极。
非交互式 shell 运行的原因有很多,但通常没有理由加载用户设置的全部自定义设置。
为什么我们要忽略用户的个人资料?
参见上文。此外,SSH 还有其他设置环境变量的方法。