su oracle -lc "/data/app/oracle/product/11.2.0/bin/lsnrctl start" su oracle -lc /data/app/oracle/product/11.2.0/bin/dbstart这两句加引号和不加引号的区别
时间: 2024-12-02 18:22:15 浏览: 12
oracle 11.2.0.4 p6880880-112000-MSWIN/Linux
当你在Linux命令行中使用`su oracle -lc`这样的命令来切换到用户oracle并执行后续的命令时,加引号和不加引号有以下区别:
**无引号的情况**:
```shell
su oracle -lc /data/app/oracle/product/11.2.0/bin/lsnrctl start
su oracle -lc dbstart
```
在这种情况下,每个命令会被直接当作单独的部分处理。如果`lsnrctl start`和`dbstart`本身就是合法命令,并且`/data/app/oracle/product/11.2.0/bin`目录下确实存在这两个文件,系统会按照这个路径尝试执行。
**带引号的情况**:
```shell
su oracle -lc "/data/app/oracle/product/11.2.0/bin/lsnrctl start"
su oracle -lc "/data/app/oracle/product/11.2.0/bin/dbstart"
```
这里,引号将整个字符串视为一个整体,包括路径和命令名。这样可以确保路径和命令名称不会因为空格、特殊字符或其他变量替换而被分割。例如,如果路径中含有空格,引号可以防止它们被错误地解析为命令的一部分。
总结一下,无引号时可能会导致路径和命令被分割,需要精确路径;而带引号则可以保护路径和命令不受干扰,适用于包含特殊字符或者复杂路径的情况。如果你确定路径和命令名没有歧义,两者都可以工作,但在不确定的情况下,加上引号更为安全。
阅读全文