我正在尝试将用户命令 grep 到一个变量中。 如果命令以特定单词开头,我会将命令重定向到另一个 shell(不是 BASH),否则它将在 bash 上定期运行。 当我使用“阅读”时,我失去了 BASH 提示,然后我无法自动完成、退格等。
我的目标是:
如果我键入例如 ls -la
命令将不会运行并将分配给变量:
user@machine:~$ ls -la
user_command = 'ls -la'
如果命令不是其他 shell 命令(不是 BASH)
eval $user_command
有什么办法可以实现吗?
最佳答案
我猜你想:通过另一个 shell 而不是 bash 调用一些特定的命令
您可以为每个命令定义一个函数
例子:
ls () { # function that, instead of bash, launch 'ls' through ksh
ksh -c "ls $*"
}
这样,每个函数的名称都与您要使用另一个 shell 运行的命令相匹配(如果需要使用 ksh 以外的其他 shell 运行,则相应地编辑函数的内部)
将这些函数放在特定用户的“~/.bashrc”文件中。
关于linux - 在 bash 中不中断地读取用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24104143/