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.
这怎么可能?
你已经写了一个脚本,它可以工作。它只是没有做您想要的,因为脚本在与调用它的 shell 不同的 shell 中运行。
运行脚本的 shell 完全按照脚本的指示执行;它将其工作目录更改为~/Downloads. 它没有其他事情可做,所以它退出了。调用 shell 的目录没有改变。
你不必相信我的话 - 你可以通过ls在dow文件的下一行添加来证明它。~/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 时,它都将可用。