Answers:
您可以明确指定要启动交互式登录外壳程序:
ssh user@host bash --login -i
在“角色”的~/.profile
(或〜/ .bash_profile中),并.bashrc
为SSH有一些其他的文件,(见man ssh
详细信息):
〜/ .ssh /环境
包含环境变量的其他定义;请参阅上面的环境。
〜/ .ssh / rc
当用户登录时,就在用户的shell(或命令)启动之前,此文件中的命令由ssh执行。有关更多信息,请参见sshd(8)手册页。
.profile
仅为登录shell(默认情况下不为ssh会话)加载。如果您希望某些东西在启动时为所有交互式shell运行,请放入它.bashrc
(或.zshrc
您的shell使用的任何东西)。
另外,如果您只想登录本地计算机上的另一个帐户,则ssh可能会过大。您可能要使用su
或代替。
.bashrc
也未加载。
使用bash应该会导致阅读~/.bashrc
。以下内容可能有助于ksh和sh(在sh模式下为bash),或者~/.bashrc
在登录期间未执行your 时。
sshd进行查询~/.ssh/environment
(检查sshd_config(5)的权限)和~/.ssh/sshrc
或~/.ssh/rc
。这使得可能设置ENV=~/.profile
或BASH_ENV=~/.profile
与SSH_LOGIN=Y
在~/.profile
我有以下布局(使用bash时替换ENV
为BASH_ENV
):
if [[ -n $SSH_LOGIN || -z $ENV ]]; then
# Put here login initialization code
unset SSH_LOGIN
ENV=~/.profile
fi
# Put here code thats get executed with each ksh/sh invocation
Bash ~/.profile
仅在它是登录外壳程序并且~/.bash.bashrc
只有在具有终端的情况下才读取,默认情况下,当使用ssh调用命令时,都不为真。但是,不幸的是,还有其他几个选项可以在服务器上设置环境,所有选项都取决于系统设置:
~/.zshenv
在这种情况下,Zsh 甚至可以读取。虽然没有相应的bash配置文件。PermitUserEnvironment
启用该选项/etc/sshd_config
,则ssh将读取~/.ssh/environment
。不幸的是,该选项默认为关闭。pam_env.so
使用user_readenv=1
in 调用/etc/pam.d/sshd
,它将读取~/.pam_environment
。虽然它不是模块的默认值,但至少在Ubuntu中以这种方式调用它。command=
在授权密钥文件中放置一个指令,以调用包装器脚本来设置环境并$SSH_ORIGINAL_COMMAND
在最后执行(我的命令是用于shell的,因此eval在此处适用,但我不确定) 。