我想实现一个userland命令,该命令将使用其参数之一(路径)并将目录更改为该目录。程序完成后,我希望外壳位于该目录中。所以我想cd用外部程序来实现命令。
cd
可以在python脚本中完成还是必须编写bash包装器?
例:
tdi@bayes:/home/$>python cd.py tdi tdi@bayes:/home/tdi$>
其他人指出,您不能从孩子那里更改父母的工作目录。
但是有一种方法可以实现您的目标-如果从shell函数中进行cd,则 可以 更改工作目录。将此添加到您的〜/ .bashrc中:
function go() { cd $(python /path/to/cd.py "$1") }
您的脚本应将路径打印到您要更改的目录。例如,这可能是您的cd.py:
#!/usr/bin/python import sys if sys.argv[1] == 'tdi': print '~/long/tedious/path/to/tdi' elif sys.argv[1] == 'xyz': print '~/long/tedious/path/to/xyz'
然后,您可以执行以下操作:
tdi @ bayes:/ home / $> go tdi tdi @ bayes:/ home / tdi $> go tdi