如何让 ash 在启动时加载一些环境变量?
只需将它们放在 /etc/profile 中
/etc/profile 仅为登录 shell 读取;使用 docker(使用 alpine>busybox>ash)时经常弹出的非登录 shell 呢?
如果在环境变量 ENV 中指定,则非登录 shell 将读取文件
太好了,我如何确保设置了 ENV?它本身是一个环境变量,默认为空白。
本质上,我正在寻找一些保证 ash 可以读取的总体配置文件。对 busybox 使用的 ash 版本的偏好(BusyBox v1.28.4,如果你想准确的话)。这样的事情存在吗?是的,我知道 docker 中的 ENV 指令,它可用于在构建 docker 镜像时设置 $ENV;我仍然想知道这在 docker 之外是否可行。
作为旁注,谁能解释这种在高山的奇怪行为?
$docker run -it alpine
/ # echo $CHARSET #proof /etc/profile has not run
/ # echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
/ # env -i sh -c 'echo $PATH'
/sbin:/usr/sbin:/bin:/usr/bin
/ # echo $ENV
/ #
Run Code Online (Sandbox Code Playgroud)
当我们可以显示 /etc/profile 没有时,与为新 …
我一直在使用这个论坛,所以我现在才加入!我见过类似的问题,但到目前为止没有任何效果(主要是使用 sed)。我想在文件中找到星号 (*) 的每个实例并删除它以及它之后的所有内容,直到到达一个空行。例如:
*252
253
254
255
(blank line here)
Run Code Online (Sandbox Code Playgroud)
或者
*261
265
(blank line here)
Run Code Online (Sandbox Code Playgroud)
每个数据块的长度会有所不同。然后我想让输出转到一个新文件。有任何想法吗?
我有一个巨大的文件,大约 4000000 行,看起来像这样:
文件:
1
1
2
3
2
4
...
Run Code Online (Sandbox Code Playgroud)
基本上,每一行都包含一个数字。考虑到这个例子,我想生成一个如下所示的文件:
新文件:
1
1
2
2
3
3
3
2
2
4
4
4
4
....
Run Code Online (Sandbox Code Playgroud)
当 n 是存储在原始行中的数字时,我希望每行重复 n 次。
正如我所提到的,文件非常大,所以我正在寻找最快的方法。我认为目前,我实现的代码瓶颈是我需要重新打开新文件进行写入。
我现在就是这样做的,但速度非常慢
while read i; do seq 1 ${i} | xargs -i -- echo $i >> newFile ;done < file
Run Code Online (Sandbox Code Playgroud)
非常感谢。
我正在尝试在其中运行一个 shell 脚本,我将调用另一个脚本,第二个脚本等待提供一些命令。我已经使用 echo 来传递命令,但它不起作用。第二个脚本继续等待输入。
脚本1:
#!/bin/sh
set -x
sh script2.sh
echo ".open Simulation\n"
set +x
Run Code Online (Sandbox Code Playgroud)
但这不会产生任何结果。它一直在等待。
输出:
./script1.sh
+ sh script2
<Nothing appears here>
Run Code Online (Sandbox Code Playgroud) 我从以下方面得到了意想不到的结果
COMPARE(){
if [ ! cmp $IPPATH/ip.old $IPPATH/ip.new >/dev/null 2>&1 ]; then
echo compare going to create
CREATE
else
echo same
fi
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试比较文件,如果它们相同,则什么都不做(即 display same,但如果它们不相同,则显示compare going to create然后运行该CREATE函数。
但是,same当文件相同并且它们绝对不相同时,我得到相同的“ ”结果。
这些显示正确(应该如此):
echo `cat $IPPATH/ip.old`
echo `cat $IPPATH/ip.new`
Run Code Online (Sandbox Code Playgroud)