У меня возникла проблема с преобразованием одного из сценариев моей компании из csh в Python. Сценарий csh вызывает команду с псевдонимом, но когда я вызываю ту же команду с псевдонимом через os.system(), она не работает.
Итак, если foo
является командой с псевдонимом:
Сценарий CSH (это работает, выполняет foo):
foo <argument>
Python (это не работает, ошибка утверждает, что foo - неизвестная команда):
os.system("foo <argument>")
Я полагаю, что при выполнении скрипта Python должно происходить какое-то переключение контекста, из-за чего Python не имеет доступа к псевдонимам, созданным в оболочке. После прочтения документации кажется, что os.system
устаревает в пользу subprocess
, и что subprocess
имеет параметр shell
, который может мне помочь... проблема в том, что я застрял с использованием Python 2.3, а subprocess
нет. т доступен до версии 2.4.
У меня возникла идея воспроизвести псевдоним в python. Так, например, скажем, foo
был псевдонимом cp
.
ЦСХ:
alias foo cp
foo file1 file2
Питон:
os.system("alias foo cp")
os.system("foo file1 file2")
Нет кубиков... здесь тоже ошибки:
sh: line 0: alias: foo: not found
sh: line 0: alias: cp: not found
sh: foo: command not found
Моя последняя попытка — взять несколько строк кода, использующих foo
, и поместить их в собственный сценарий CSH, который вызовет Python. Но если есть способ заставить это работать, не прибегая к этому, я хотел бы узнать об этом.
Заранее спасибо!