ssh连接远程主机执行脚本环境变量问题.pdfVIP

ssh连接远程主机执行脚本环境变量问题.pdf

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2015/6/15 ssh连接远程主机执行脚本的环境变量问题 ssh连接远程主机执行脚本的环境变量问题 11 Nov 2014 • 5 min. read • 11 Comments 近日在使用ssh命令 ssh user@remote ~/myscript.sh 登陆到远程机器remote上执行脚本时 ,遇到一个奇怪的问题 : ~/myscript.sh: line n: app: command not found app是一个新安装的程序 ,安装路径明明已通过 /etc/profile 配置文件加到环境变量中 ,但这里为何会找不到 ?如果直接登陆机器remote并执 行 ~/myscript.sh 时 ,app程序可以找到并顺利执行。但为什么使用了ssh远程执行同样的脚本就出错了呢 ?两种方式执行脚本到底有何不同 ?如果 你也心存疑问 ,请跟随我一起来展开分析。 目录 问题定位 bash的四种模式 interactive + login shell 加载配置文件 配置文件的意义 non­interactive + login shell interactive + non­login shell 加载配置文件 bashrc VS profile non­interactive + non­login shell 加载配置文件 更为直观的示图 典型模式总结 再次尝试 配置文件建议 写在结尾 说明 ,本文所使用的机器是 :SUSE Linux Enterprise。 问题定位 这看起来像是环境变量引起的问题 ,为了证实这一猜想 ,我在这条命令之前加了一句 :which app ,来查看app的安装路径。在remote本机上执行 脚本时 ,它会打印出app正确的安装路径。但再次用ssh来执行时 ,却遇到下面的错误 : which: no app in (/usr/bin:/bin:/usr/sbin:/sbin) 这很奇怪 ,怎么括号中的环境变量没有了 app 程序的安装路径 ?不是已通过 /etc/profile 设置到 PATH 中了 ?再次在脚本中加入 echo $PATH 并以 ssh执行 ,这才发现 ,环境变量仍是系统初始化时的结果 : /usr/bin:/bin:/usr/sbin:/sbin 这证明 /etc/profile 根本没有被调用。为什么 ?是ssh命令的问题么 ? 随后我又尝试了将上面的ssh分解成下面两步 : data:text/html;charset utf­8,%3Ch1%20class%3D%22post­title%22%20style%3D%22color%3A%20rgb(34%2C%2034%2C%2034)%3B%20margin%3A%200px%3B%20line­height%3A%201.1%3B%20font­size%3A%2030px%… 1/8 2015/6/15 ssh连接远程主机执行脚本的环境变量问题 user@local  ssh user@remote    # 先远程登陆到remote上 user@remote ~/myscript.sh      # 然后在返回的shell中执行脚本 结果竟然成功了。那么ssh以这两种方式执行的命令有何不同 ?带着这个问题去查询了 man ssh : If command is specified, it is executed on the remote host instead of a login shell. 这说明在指定命令的情况下 ,命令会在远程主机上执行 ,返回结果后退出。而未指定时 ,ssh会直接返回一个登陆的shell。但到这里还是无法理 解 ,直接在远程主机上执行和在返回的登陆shell中执行有什么区别 ?即使在远程主机上执行不也是通过shell来执行的么 ?难道是这两种方式使用的 shell有什么不同 ? 暂时还没有头绪 ,但隐隐感

文档评论(0)

xuefei111 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档