Python linux中的cd命令不';当它在子shell中运行时,在shell脚本中执行时不能工作有没有办法使cd在子shell中工作
''' 文件名为abc.sh 假设初始路径为/home 和abc.sh conatains代码行Python linux中的cd命令不';当它在子shell中运行时,在shell脚本中执行时不能工作有没有办法使cd在子shell中工作,python,bash,shell,Python,Bash,Shell,''' 文件名为abc.sh 假设初始路径为/home 和abc.sh conatains代码行 光盘桌面 pwd 当我运行$./abc.sh或$bash.sh时 输出仍然为/home,但未更改为/home/Desktop 尝试使用$source abc.sh运行它 虽然这会提供所需的输出/主页/桌面 现在我的问题是,当我通过python执行这个脚本时,除了source命令之外,有没有其他方法可以实现这一点?当使用os.system('source abc.sh')执行时,它会抛出错误?Ad
现在我的问题是,当我通过python执行这个脚本时,除了source命令之外,有没有其他方法可以实现这一点?当使用os.system('source abc.sh')执行时,它会抛出错误?Add
pwd
aftercd Desktop
。它是否显示正确的目录?也许你需要cd~/Desktop
?你说的“dir在subshell中运行时不会更改”到底是什么意思?脚本中的cd
对运行脚本的shell没有任何影响?如何准确地运行脚本或命令?请回答您的问题,并添加更多关于您到底做了什么、实际发生了什么、您得到了什么输出/结果以及您想要得到什么的详细信息。您是否有一个名为abc.sh
的脚本试图调用同名脚本?请使用别名()或source
命令()。@OllydeVulder,函数而不是别名是最佳做法。(虽然别名可以满足这一要求,但它需要的引号与代码在别名上下文之外的引号不同——特别是在cd
ing到名称中带有空格/quotes/etc的目录时;相比之下,使用函数时,引号与脚本中使用的完全相同)。此外,默认情况下,脚本中的别名是关闭的,但函数仍然在那里工作(导出或源代码时)。@AdnanSheikh,…要清楚,从abc.sh
的角度来看,目录确实会更改(假设桌面
相对于脚本的起始位置是有效的);只是从调用shell的角度来看,它没有。如果不想依赖于脚本的起始位置,请将行更改为cd“$HOME/Desktop”| | exit
——这样路径是绝对路径,并且如果cd
失败,脚本不会从错误的位置运行abc.sh
(如果脚本是从一个没有Desktop
子目录的目录启动的,则会发生这种情况)。