我想只输入foo.bsh甚至foo来执行foo.bsh,而不是./foo.bsh。我想临时为目录中的所有.bsh以及全局执行此操作。例如,我想要一个全局密钥MYIP,它调用一个脚本来回显我的外部IP。我不知道这是否有意义,因为如果我重写echo,可能会导致bash崩溃。
编辑:更清楚地说。我想要一个用于编写"./“的快捷键,为这些命令节省2个键,例如在DOS中,可以使用foo执行foo.exe。如果我键入foo (ENTER),是否无法在当前目录中查找.bsh文件?
发布于 2012-10-30 03:38:59
当找不到命令时,您可以挂接到bash的处理过程中,并添加您自己的函数进行处理。例如,将以下内容添加到您的.bashrc:
function command_not_found_handle()
{
[ -f "${1}.bsh" ] && bash "${1}.bsh"
}所以,如果你在当前目录中有foo.bsh,你只需要输入"foo“,它就会运行。
编辑:澄清--当bash用尽其内部机制来查找您输入的命令时,它将以命令的名称作为参数运行command_not_found_handle()函数。所以,你可以用任何你想要的逻辑来定义这个函数。
发布于 2012-10-30 03:49:02
您确实不应该这样做,但是在您的.bashrc或会话中键入以下命令,将当前目录添加到路径中。
PATH=$PATH:.当然,这意味着如果有人将具有相似名称的命令放在目录中,它很容易被执行。
所以攻击者会这样做:
cd /shared_directory
echo "rm -rf all_your_files" > apropo
chmod +x apropo然后你:
cd /shared_directory
apro<TAB> (completes to apropo)
(all your files are gone).如果您想知道这里的目标命令是apropos。
通常,更好的解决方案是将可执行文件链接到路径中的内容,如~/bin
所以:
PATH=$PATH:~/bin (in your bashrc or whatever)
ln -s ~/some_executable ~/bin
some_executable发布于 2012-10-30 03:35:29
您可以通过编辑~/.bash_profile页面并将可执行文件所在的目录添加到列表末尾来实现这一点,例如
export PATH=$PATH:/your/directory我通常创建一个~/bin目录,并将我所有的可执行文件存储在这个目录中。因此我通常会将此条目添加到~/.bash_profile文件中
export PATH=$PATH:/home/yourname/bin/之后,我的bin目录中的所有脚本(以前都是chmod +x )只需在控制台按名称调用它们即可。
我希望它能帮上忙。干杯
https://stackoverflow.com/questions/13128314
复制相似问题