我定义了这个别名来运行 bash 然后导航到某个文件夹,但是当我运行它时,它只运行 bash 并停留在当前路径/目录/文件夹中。
我在 ~/.bashrc 中以两种不同的方式定义了它们,但两种方法都无法导航到特定文件夹。
定义 #1
alias setup_ROR="bash; cd /users/nikeelevet/code/rails;"
定义 #2
function setup_ROR() {
bash
cd /users/nikeelevet/code/rails
}
知道为什么 CD 无法工作吗?
谢谢!
答案1
它们都会打开一个新的 shell,等待它关闭,然后更改目录。 这两个问题都可以通过不尝试运行 bash 来解决。
答案2
为什么不只是:
alias setup_ROR="cd /users/nikeelevet/code/rails"
和
function setup_ROR() {
cd /users/nikeelevet/code/rails
}
如果它在你的 bashrc 中,那么当运行别名时你已经在 bash shell 中了,为什么要运行另一个 bash?
答案3
别名已生效。如果您尝试以下操作:
~$alias test='ls;ls;'
然后运行命令测试
~$test
您将看到命令“ls”运行了两次。您无法导航到文件夹的原因是,当它第一次执行命令“bash”时,系统将启动一个 bash,它会等待您的输入,直到您输入“exit”才会返回。我认为如果您运行 setup_ROR,然后输入“exit”,您将导航到您的目录。
我不明白你为什么要在别名中运行“bash”。
答案4
所以您要做的就是用特定的当前目录启动一个新 shell,对吗?
事实上,当前工作目录是新进程继承的内容之一。因此这应该适合您的目的:
setup_ROR() {
( cd /users/nikeelevet/code/rails ; bash
}
括号导致两个命令在子 shell 中执行,因此cd
不会影响您当前的 shell(当您退出子 shell 时会看到)。