cd命令不在bash脚本中工作

时间:2016-05-18 02:42:59

标签: linux bash shell

我想获取datetime并创建一个名为的目录,然后cd到此目录。

这是我的bash脚本:

t=$(date +%F-%H%M%S) 
mkdir $t
cd $t

但它并没有完全发挥作用。

它创建了一个目录,但cd命令不起作用。

截图:

screenshot of command prompt

1 个答案:

答案 0 :(得分:0)

您正在运行带子shell的脚本。

在脚本中运行cd的问题是它从该目录开始创建子shell。当脚本结束时,子shell也会结束,并且当你运行脚本时,你会回到你开始的地方。所以它是这样的:

  1. 启动脚本
  2. 创建了子shell
  3. 创建目录
  4. 更改为目录
  5. 结束脚本
  6. end subshel​​l
  7. 回到起点
  8. 您可以证明cd在脚本中有效,并且您在执行脚本时通过留下标记进入该目录。

    t=$(date +%F-%H%M%S) 
    mkdir $t
    cd $t
    echo "I'm here" > inside.txt
    

    现在,当脚本结束时,您将回到启动脚本的位置。但如果您cd到目录,然后运行ls,那么您就会看到自己制作的文件。

    正如@Dawid Ferenczy所指出的那样,你实际上可以source将这个脚本source test.sh 放入当前的shell而不是运行子shell,例如:

    let logo = UIImage(named: "LogoMV_BAR@2x");
    let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 100, height: 30))
    imageView.image = logo
    imageView.contentMode = UIViewContentMode.ScaleAspectFit
    self.navigationItem.titleView = imageView