使用 AIX 的 ksh 实现以非交互模式读取配置文件脚本

     2023-03-15     27

关键词:

【中文标题】使用 AIX 的 ksh 实现以非交互模式读取配置文件脚本【英文标题】:Reading profile script in non-interactive mode with AIX implementation of ksh 【发布时间】:2014-08-07 14:52:09 【问题描述】:

请注意,这是一个与 AIX 相关的问题。

我有一个在 Redhat 上运行的 jenkins 服务器,它通过 SSH 在 AIX 服务器上运行一个节点。 这些命令使用 SSH 以非交互方式运行到 AIX 机器上以 ksh 作为其标准 shell 的用户。

问题是这个构建需要一些环境变量,我似乎无法让它工作。

我尝试过: Jenkins 允许我为会话设置一些环境变量。所以我尝试了:

ENV="$HOME/.profile"

我尝试创建一个包含

的 .kshrc 文件
. .profile

但这些方法似乎都不能让 KSH 运行 .profile 脚本。

.profile 脚本包含我需要的用户的环境设置。

如何在执行命令之前获得 KSH 的 AIX 实现来运行我的 .profile 脚本?

【问题讨论】:

【参考方案1】:

大多数 shell 不会在非交互式会话中获取其 .profile 文件。一个简单的解决方案是自己获取 .profile 作为您发送的命令的一部分。

所以不是

yourcommand1; yourcommand2

你应该发送

. ~/.profile; yourcommand1; yourcommand2

通过 ssh

阅读有关 Jenkins 控制 ssh 命令的评论后更新

如果您的 ssh 命令由 Jenkins 执行,您应该查看 https://wiki.jenkins-ci.org/display/JENKINS/SSH+Slaves+plugin,尤其是“登录配置文件”段落。

我会说这些解决方案之一是最好的

    使用节点的配置页面从 Jenkins 设置所有环境变量。安装 EnvInject 插件来执行此操作。 围绕获取配置文件脚本的从站上的 java 命令编写一个包装器,并调整 JavaPath(也在节点的配置页面上)以指向该包装器。

【讨论】:

问题是我无法控制正在发送的命令。詹金斯会。 有没有办法让环境只获取配置文件脚本? 如果您实施选项 2,您应该能够获取配置文件脚本,然后启动 java。 对不起,我不清楚。如何让 KSH 在非交互模式下实际读取配置文件脚本的主要问题仍未得到解答。在创建案例之前,我已经找到了您在答案中描述的链接(我应该写在案例中,请原谅)。问题是我们定义了 8 个不同的 Java 版本,为它们创建包装器既不切实际又丑陋。如果包装脚本是解决此问题的唯一方法,那很好,就这样吧,但我宁愿让 KSH 处理它。【参考方案2】:

你需要明确告诉 Jenkins 你想在ksh shell 中执行它们。 默认情况下,Jenkins 以sh <commands> 运行。

在你的 shell 命令中添加一个 shebang 作为第一行,

#!/bin/ksh

【讨论】:

shell 不依赖于接收机器的 /etc/passwd 文件上的用户吗?【参考方案3】:

我所知道的在 AIX 上设置适用于非交互式 shell 的环境变量的唯一方法是通过 /etc/environment。我相信这是正确的地方,但它当然适用于所有用户和所有 shell。

【讨论】:

以非交互方式将参数传递给交互式程序

...】:2013-01-0118:51:25【问题描述】:我有一个bash脚本,它使用read命令以交互方式读取命令的参数,例如是/否选项。有没有办法在传递默认选项值作为参数的非交互式脚本中调用此脚本?这不仅仅是我必须传递给交互式脚本的一个... 查看详情

使用 ksh(AIX) 时如何在 awk 中调用变量? [复制]

】使用ksh(AIX)时如何在awk中调用变量?[复制]【英文标题】:Howtocallavariableinsideawkwhenusingksh(AIX)?[duplicate]【发布时间】:2020-08-2912:05:25【问题描述】:我正在编写一个脚本,我需要像这样在awk代码块中传递变量值$psauxw|awk/$variable/|a... 查看详情

如何克服 Linux 上的 ksh 与 AIX/Solaris/HPUX 上安装的 ksh 之间的不兼容问题?

】如何克服Linux上的ksh与AIX/Solaris/HPUX上安装的ksh之间的不兼容问题?【英文标题】:HowtoovercomeanincompatibilitybetweenthekshonLinuxvs.thatinstalledonAIX/Solaris/HPUX?【发布时间】:2010-09-0914:48:25【问题描述】:我参与了将包含数百个ksh脚本的... 查看详情

REDUX:如何克服 Linux 上的 ksh 与 AIX/Solaris/HPUX 上安装的 ksh 之间的不兼容问题?

】REDUX:如何克服Linux上的ksh与AIX/Solaris/HPUX上安装的ksh之间的不兼容问题?【英文标题】:REDUX:HowtoovercomeanincompatibilitybetweenthekshonLinuxvs.thatinstalledonAIX/Solaris/HPUX?【发布时间】:2010-09-1021:38:06【问题描述】:在我们将数百个ksh脚本... 查看详情

有啥方法可以在 Linux/AIX 中从 ksh 更改进程名称?

】有啥方法可以在Linux/AIX中从ksh更改进程名称?【英文标题】:IsthereanywayIcanchangeprocessnamefromkshinLinux/AIX?有什么方法可以在Linux/AIX中从ksh更改进程名称?【发布时间】:2021-08-2709:49:04【问题描述】:有什么方法可以将进程名称从k... 查看详情

ksh 正则表达式错误'=〜`意外

...:我有一个rpm规范,它在%pre部分运行一些测试。我正在使用AIX5.3和kornshell。我的脚本从ps中提取一些东西,即foo和foobar(我只想要foo),然后测试每个值以查看它是否与模式匹配。但是代码if[[$x=~fo 查看详情

aix命令创建jfs2的lv及fs(非smitty交互模式)

AIX命令创建JFS2的LV及FS    下面命令是创建一个2g逻辑卷及在此卷上创建jfs2的文件系统,并挂载,并配置系统自动挂载#mkdir/databack#mklv-tjfs2-ylv_databackdatavg2g-t为逻辑卷类型-y为逻辑卷名字datavg是指定卷组2g是逻辑卷的... 查看详情

使用 git 以非交互方式编辑旧提交

】使用git以非交互方式编辑旧提交【英文标题】:Editingoldcommitsnon-interactivelywithgit【发布时间】:2012-05-0507:09:42【问题描述】:我知道如何手动编辑旧提交:$gitlog--pretty=format:\'%h%s\'60e5ed9Secondcommit0fbc8edFirstcommit$gitrebase--interactive0fb... 查看详情

如何以非交互方式在 Git 中重新排序提交

...间】:2011-06-2605:56:59【问题描述】:什么非交互式git命令实现了从之前到之后的变化?之前:A---B---C---D之后:A---C\'---B\'---D\'【问题讨论】:【参考方案1】:在您的情况下,您可以重新设置交互式基础:gitrebase-iHEAD~4然后您可以 查看详情

如何在ksh中把clear绑定到^l上?(代码片段)

...bash功能。bind"C-l":"clear-screen"我需要这个功能bind因为我在使用set-ovi在bash中使用,也打算在ksh中使用。试图在ksh中使用它,却打印出一个错误。ksh:bind:notfound答案很抱歉打破这个消息,但你已经注意到这是ksh和bash之间的不同:绑... 查看详情

使用 CreateProcessWithTokenW() 从管理员帐户以非提升模式启动进程

】使用CreateProcessWithTokenW()从管理员帐户以非提升模式启动进程【英文标题】:Launchingprocessinnon-elevatedmodefromanadminaccountusingCreateProcessWithTokenW()【发布时间】:2014-07-2712:24:15【问题描述】:我遵循FrankK.的proposedsolution从提升的用户... 查看详情

bitnamistack安装程序非交互式[关闭]

...ux中以非交互方式安装Bitnami应用程序。例如,您是否可以使用bash脚本Bitnami安装程序指导我完成MEAN堆栈/LAMP堆栈的安装?答案Bitnami工程师在这里:感谢您的关注。我们的安装程序提供的不同模式如下:图形模式:默认模式。X-Wind... 查看详情

有没有办法以非交互方式压缩大量提交?

...D~3。有没有一种快速的方法可以做到这一点,还是我需要使用rebase--interactive?【问题讨论】:类似问题:***.com/questions/5189560/… 查看详情

如何以非交互方式为“psql”指定密码?

...【发布时间】:2011-09-1807:22:36【问题描述】:我正在尝试使用shell脚本自动化数据库创建过程,而我在将密码传递给psql时遇到了障碍。下面是一些来自shell脚本的代码:psql-U$DB_USER-hlocalhost-c"$DB_RECREATE_SQL"如何 查看详情

以非交互方式执行 rgrep

】以非交互方式执行rgrep【英文标题】:Executingrgrepnon-interactively【发布时间】:2011-08-1016:35:54【问题描述】:我正在尝试从一个小型EmacsLisp实用程序运行rgrep命令,但遇到了一个奇怪的错误。命令说明为:rgrep是一个交互式编译... 查看详情

在 AIX 上运行 Linux Shell

...在AIX上执行这个linux脚本而不用ksh重写整个脚本。我尝试使用#!/usr/bin/envbash 查看详情

阵列在 AIX KSH 中不起作用

】阵列在AIXKSH中不起作用【英文标题】:ArraysnotworkinginAIXKSH【发布时间】:2019-01-2721:01:48【问题描述】:我有代码:typeset-iidx=0foreachin`find.-name"*.log"-print`doILIST[idx]=`basename$each`idx=idx+1print:$ILIST[$idx]:$each:$idx<<doesnotprintarr 查看详情

golang的交互模式进阶-读取用户的输入

                  Golang的交互模式进阶-读取用户的输入                                          作者:尹正杰版权声明:原创作品,谢绝转载!否则... 查看详情