linux双击运行找不到环境变量

linux双击运行找不到环境变量,第1张

在Linux中,双击一个文件并不能运行,除非该文件可以被系统正确识别,即该文件需要有一定的可执行权限。首先,检查可执行文件的权限,可以使用“ls -l ”命令查看文件权限,如果文件没有可执行权限,可以用“chmod +x ”命令给予文件可执行权限。此外,可能是由于环境变量没有设置导致的,在运行程序之前要先根据程序的路径,设置环境变量,如export PATH=$PATH:/user/program/bin

http://bbs.chinaunix.net/thread-2003718-1-1.html

[root@localhost ~]# su - oracle

[oracle@localhost ~]$ $ORACLE_HOME/a.sh

this is a.sh

[oracle@localhost ~]$

上面的命令都正常,但是下面的命令则无法运行:

[root@localhost ~]# su - oracle -c "$ORACLE_HOME/a.sh"

-bash: /a.sh: 没有那个文件或目录

[root@localhost ~]#

下面的命令也没问题:

[root@localhost ~]# su - oracle -c "ls $ORACLE_HOME"

admin Disk3oraInventoryra_createdb.log ra_idx01.dbf ra.sql

ship_9204_linux_disk1.cpio.gz

createrauser.sql doc oui ra_createtable.log ra_initData.log scgs_ca.dmp

ship_9204_linux_disk2.cpio.gz

Disk1 jre procedurel.log ra_data01.dbf ra_rbs01.dbf scgs_km.dmp

ship_9204_linux_disk3.cpio.gz

Disk2 oradata product ra_data02.dbf ra_scgs.dmp scgs_ra.dmp temp01.dbf

[root@localhost ~]#

命令su - oracle -c "$ORACLE_HOME/a.sh"是在当前的Shell下执行的,因为root shell下面没有定义ORACLE_HOME,所以上面命令相当于su - oracle -c "/a.sh"

su - oracle -c "ls $ORACLE_HOME"中的命令 ls $ORACLE_HOME是切换到oracle用户环境下执行的,所以没问题。

整条命令su - oracle -c "$ORACLE_HOME/a.sh"是你在root的shell下敲的,

所以命令里面变量$ORACLE_HOME被替换成值,就成了su - oracle -c "/a.sh",

就是-c 后面跟着的字符串在传递给oracle前已经被处理过了,已经变成了"/a.sh"

你第二条命令里oracle用户执行的也不是 ls $ORACLE_HOME,其实执行的命令是ls,显示的是oracle用户主目录下的东东

不信你可以把oracle profile里的ORACLE_HOME改为/tmp试一下,命令su - oracle -c "ls $ORACLE_HOME"显示的内容和现在

一样,不会是/tmp下的内容


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8380398.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-15
下一篇2023-04-15

发表评论

登录后才能评论

评论列表(0条)

    保存