我想在bash脚本中嵌入短的Python脚本文本,以便在.bash_profile
等中使用。如何最好地实现这样的操作?
我目前的解决方案是使用-c
选项调用Python解释器,并告诉解释器从stdin
读取并exec
它所读取的任何内容。从那里,我可以构建简单的工具,例如以下工具,使我能够处理文本以供交互提示使用:
function pyexec() {
echo "$(/usr/bin/python -c 'import sys; exec sys.stdin.read()')"
}
function traildirs() {
pyexec <<END
trail=int('${1:-3}')
import os
home = os.path.abspath(os.environ['HOME'])
cwd = os.environ['PWD']
if cwd.startswith(home):
cwd = cwd.replace(home, '~', 1)
parts = cwd.split('/')
joined = os.path.join(*parts[-trail:])
if len(parts) <= trail and not joined.startswith('~'):
joined = '/'+joined
print joined
END
}
export PS1="\h [\$(traildirs 2)] % "
我觉得这个方法有点可疑,想知道还有没有其他替代的方法。
我的bash脚本技能非常基础,所以我特别想知道从bash解释器的角度来看,我是否在做一些愚蠢的事情。