我想在 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 解释器的角度做一些愚蠢的事情。