如果通过 `ssh user@server myscript` 调用,执行 shell init stuff
Execute shell init stuff if called via `ssh user@server myscript`
我想在通过 ssh user@server myscript
调用 myscript
之前执行 shell init stuff
我试过了:
# .bash_profile
echo DDDDDDDDDDDDDDDDDDDDDdddd
这可以交互工作:
ssh user@server
DDDDDDDDDDDDDD
user@host>
但不是这样的(DDDDD...不见了)
ssh user@server date
Thu 01 Jul 2021 09:01:11 AM CEST
如何在通过 ssh
调用 myscript
之前执行初始化操作?
如果您想在 运行 date
命令之前获取初始化脚本,您可以执行
ssh user@server 'bash -c ". /path/to/init.sh; date"'
其中 /path/to/init.sh
是所需初始化脚本的路径。
例如,如果您想获取 user
的 .bash_profile
,您可以执行
ssh user@server 'bash -c ". ~/.bash_profile; date"'
如果你想在 server
上作为登录名 shell 执行 bash 你可以
ssh user@server 'bash -l -c "date"'
我找到了解决办法。
首先它不起作用,因为我在 .bashrc
.
的 end 添加了“echo DDDDDDDDD”
如果我将它添加到 .bashrc
的 top 处,它会起作用。
现在我的 shell 行得到执行:
ssh user@server date
DDDDDDDDD
Fri 02 Jul 2021 08:40:38 AM CEST
.bashrc
中的这些行(在 Ubuntu 中似乎是默认的)是造成混淆的原因:
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
我想在通过 ssh user@server myscript
myscript
之前执行 shell init stuff
我试过了:
# .bash_profile
echo DDDDDDDDDDDDDDDDDDDDDdddd
这可以交互工作:
ssh user@server
DDDDDDDDDDDDDD
user@host>
但不是这样的(DDDDD...不见了)
ssh user@server date
Thu 01 Jul 2021 09:01:11 AM CEST
如何在通过 ssh
调用 myscript
之前执行初始化操作?
如果您想在 运行 date
命令之前获取初始化脚本,您可以执行
ssh user@server 'bash -c ". /path/to/init.sh; date"'
其中 /path/to/init.sh
是所需初始化脚本的路径。
例如,如果您想获取 user
的 .bash_profile
,您可以执行
ssh user@server 'bash -c ". ~/.bash_profile; date"'
如果你想在 server
上作为登录名 shell 执行 bash 你可以
ssh user@server 'bash -l -c "date"'
我找到了解决办法。
首先它不起作用,因为我在 .bashrc
.
如果我将它添加到 .bashrc
的 top 处,它会起作用。
现在我的 shell 行得到执行:
ssh user@server date
DDDDDDDDD
Fri 02 Jul 2021 08:40:38 AM CEST
.bashrc
中的这些行(在 Ubuntu 中似乎是默认的)是造成混淆的原因:
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac