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=1in 调用/etc/pam.d/sshd,它将读取~/.pam_environment。虽然它不是模块的默认值,但至少在Ubuntu中以这种方式调用它。command=在授权密钥文件中放置一个指令,以调用包装器脚本来设置环境并$SSH_ORIGINAL_COMMAND在最后执行(我的命令是用于shell的,因此eval在此处适用,但我不确定) 。