我想使用bash文件更改linux中的目录。以下是使用的代码段。
#!/bin/bash
alias proj="cd /home/prag/Downloads"
但是在运行bash文件时没有响应,即它保持在同一目录中。为什么会如此。?为什么别名在这里不起作用,或者我应该做些不同的事情。
答案 0 :(得分:4)
运行bash文件将不起作用,因为对当前工作目录的更改保留在脚本中(因为它是一个单独的进程,为您提供命令提示符 - bash)。
将别名添加到〜/ .bash_aliases或〜/ .bashrc文件中(前者更可取,如果前者不存在,后者可能会更快)然后它应该可以工作。
答案 1 :(得分:2)
每个进程都有自己的当前目录。当您启动bash脚本并更改其当前目录然后存在时,这对父进程(即启动脚本的shell)没有影响。
不要运行./script.sh
,而是试试source ./script.sh
(简称. ./script.sh
)。
此外,为alias
定义cd
不会自行更改目录。我假设你实际上在某个地方调用了别名。
答案 2 :(得分:0)
你是说你想写一个将cd到另一个目录的bash脚本吗?
然后为什么要使用别名?只需使用“cd”命令!
答案 3 :(得分:0)
这是因为当您调用./cd.sh
时,脚本会在新的shell进程中执行。
因此,您的脚本将更改该子shell中的目录,并且当您的脚本退出时,控制权将返回到您之前的shell。
您可以像. cd.sh
那样调用脚本 - 这会执行当前shell中的脚本并且cd-command可以正常工作。