将终端中的永久命令快捷方式设置为 cd 到下载

mk1*_*024 5 permissions command-line bash alias

我在/bin命名中写了一个新的文本文件,ram其中包含:

watch -n 1 free -h
Run Code Online (Sandbox Code Playgroud)

和一个文件sen

watch -n 1 sensors
Run Code Online (Sandbox Code Playgroud)

在同一个文件夹中,以避免键入

watch blahblahblah...
Run Code Online (Sandbox Code Playgroud)

每次。

另外,我更改了这两个的权限

-rw-r--r--
Run Code Online (Sandbox Code Playgroud)

-rw-r--r-x
Run Code Online (Sandbox Code Playgroud)

并实现了我的目标。即使在重新打开 shell 后它也能工作,即我可以输入ram而不是watch -n 1 free -h

但是,在我尝试相同的程序后遇到了问题

cd /home/myname/Downloads/
Run Code Online (Sandbox Code Playgroud)

和新的文本文件保存/bin并命名dow,与权限相同。

这次 dow在终端中什么都不做,甚至不显示任何消息。

我尝试将同一个文件保存在/usr/bin.

这怎么可能?

Zan*_*nna 7

你已经写了一个脚本,它可以工作。它只是没有做您想要的,因为脚本在与调用它的 shell 不同的 shell 中运行。

运行脚本的 shell 完全按照脚本的指示执行;它将其工作目录更改为~/Downloads. 它没有其他事情可做,所以它退出了。调用 shell 的目录没有改变。

你不必相信我的话 - 你可以通过lsdow文件的下一行添加来证明它。~/Downloads当你运行命令时,你的目录的内容(假设它有一些)将被列出(没有通常的颜色,这些颜色由你的别名提供)~/.bashrc非交互式 shell 不读取)。

要在当前shell中执行脚本,可以使用source命令,也可以写成. 所以,如果你输入. file

. dow
Run Code Online (Sandbox Code Playgroud)

您当前的 shell 将更改目录。

或者,您可以改为设置别名:

zanna@toaster:~$ alias dow='cd $HOME/Downloads'
zanna@toaster:~$ dow
zanna@toaster:~/Downloads$ 
Run Code Online (Sandbox Code Playgroud)

要使其永久化,请添加该行

alias dow='cd $HOME/Downloads'
Run Code Online (Sandbox Code Playgroud)

到您的~/.bashrc文件。每次运行交互式 shell 时,它都将可用。