我正在寻找一种方法来消除某些附加代码以.bashrc
自动强制加载其环境的安装程序的不良行为。这个问题出现了几次,主要是在 Conda 上,在某些情况下,用户最终会使用一个损坏的帐户阻止他们再登录。
我试图在 .bashrc 的末尾添加一个未关闭的 here-document,如下所示:
# .bashrc
#...
: <<'__END__'
哪个有效,但会产生解析错误烦人的警告。
什么是一种干净的方法(不使 .bashrc 只读)?
我正在寻找一种方法来消除某些附加代码以.bashrc
自动强制加载其环境的安装程序的不良行为。这个问题出现了几次,主要是在 Conda 上,在某些情况下,用户最终会使用一个损坏的帐户阻止他们再登录。
我试图在 .bashrc 的末尾添加一个未关闭的 here-document,如下所示:
# .bashrc
#...
: <<'__END__'
哪个有效,但会产生解析错误烦人的警告。
什么是一种干净的方法(不使 .bashrc 只读)?
我有一个适用于 IRIX/Linux/macOS/FreeBSD 的安装程序/更新程序脚本,我想将其兼容性扩展到 Solaris。
我已经修复了一些不符合 POSIX 的部分,除了crontab
像这样生成的部分:
printf '%s\n' [email protected] '*/15 * * * * /path/cmd' | crontab -
# crontab -l # (on Linux/macOS/FreeBSD)
[email protected]
*/15 * * * * /path/cmd
注意: /path/cmd
除非检测到问题,否则是安静的
代码在 Solaris 上失败有以下三个原因:
MAILTO=
引发语法错误*/15
引发语法错误crontab -
尝试打开名为-
我用以下方法修复了 #2和#3:
printf '%s\n' '0,15,30,45 * * * * /path/cmd' | crontab
# crontab -l
0,15,30,45 * * * * /path/cmd
现在我不知道如何转换MAILTO=
零件。从 POSIX 转发电子邮件的方法是crontab
什么?
感谢@ilkkachu和@Gilles'SO-stopbeingevil'指针,这就是我决定以符合 POSIX的方式模拟crontab行为的方式:MAILTO
# crontab -l
0,15,30,45 * * * * out=$(/path/cmd 2>&1); [ -n "$out" ] && printf \%s\\n "$out" | mailx -s "Cron <$LOGNAME@$(uname -n)>" [email protected]
但是,这个解决方案有一个潜在的问题:如果printf
不是内置的 shell并且输出太大,那么它将失败并出现类似的问题。Argument list too long