为什么“ cd”在shell脚本中不起作用?

穆罕默德·雷扎·雷兹瓦尼(Mohammad Reza Rezwani)

我只想编写一个可以更改目录的脚本

我将以下命令放在文件中 /home/alex/pathABC

#!/bin/sh
cd /home/alex/Documents/A/B/C
echo HelloWorld

我做了

chmod +x pathABC

在终端中,在中/home/alex,我运行./pathABC,但是输出仅为HelloWorld,当前目录未更改。

那怎么了?

高蒂耶

正如其他人所解释的那样,目录是在脚本的子进程中更改的,而不是在从中调用脚本的终端进程中更改的。子进程死亡后,您将返回到原来的终端。

几种选择:

1.符号链接

将符号链接放在您想要轻松访问的长途之家中

$ ln -s /home/alex/Documents/A/B/C ~/pathABC

然后使用以下命令访问目录:

$ cd ~/pathABC

2.别名

在您的〜/ .bashrc中放置一个别名:

alias pathABC="cd /home/alex/Documents/A/B/C"

(从这里开始

3.功能

创建一个更改目录的函数,该函数将在终端进程中运行,然后可以更改其目录。

(从这里开始

4.避免像小孩一样奔跑

编写脚本而不是运行脚本。源代码(由.完成source)导致脚本在同一shell中执行,而不是在其自己的子shell中运行。

$ . ./pathABC

(从这里这里

5. CD-able vars

在中设置cdable_vars选项,~/.bashrc并在目录中创建一个环境变量:

shopt -s cdable_vars
export pathABC="/home/alex/Documents/A/B/C"

那你可以用 cd pathABC

(从这里开始

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么Jobs命令在Shell脚本中不起作用?

为什么进程替换在Shell脚本中不起作用?

为什么我的命令在shell脚本中不起作用,而在bash中起作用?

为什么“读取时”在终端中起作用,而在Shell脚本中却不起作用?

为什么最简单的Shell脚本不起作用?

Ftp:为什么!cd不起作用?

为什么`source / home / vagrant / .bashrc`在Vagrant Shell配置脚本中不起作用?

为什么我的Mac Terminal命令在Shell脚本中不起作用?

为什么重定向在我的 shell 脚本中不起作用?

为什么传入的参数在我的 shell 脚本中不起作用?

为什么“脚本”中的代码在 html 中不起作用?

为什么bash别名在脚本中不起作用?

为什么 if 语句在 Powershell 脚本中不起作用?

为什么超时在bash脚本中不起作用?

为什么'%matplotlib inline'在python脚本中不起作用?

为什么在.profile中采购脚本不起作用?

为什么SET LINESIZE在我的脚本中不起作用?

为什么聚合脚本在Elasticsearch中不起作用?

为什么zsh autoload在脚本中不起作用?

为什么Unix命令在Perl脚本中不起作用?

为什么getScript在外部脚本中不起作用?

为什么SIGINT在脚本的后台进程中不起作用?

为什么陷阱信号在Shell函数中不起作用?

为什么此kill在此Bash脚本中不起作用,而仅在脚本之外起作用?

为什么此CURL在PHP中起作用但在shell中不起作用

为什么当查询本身起作用时,php脚本中的该查询不起作用?

为什么我的cd命令不起作用?

为什么“ for”在“ go”中不起作用?

在PHP中为什么不起作用