su -c命令與環境變數的困惑
http://bbs.chinaunix.net/thread-2003718-1-1.html
[[email protected] ~]# su - oracle
[[email protected] ~]$ $ORACLE_HOME/a.shthis is a.sh
[[email protected] ~]$
上面的命令都正常,但是下面的命令則無法執行:
[[email protected] ~]# su - oracle -c "$ORACLE_HOME/a.sh"
-bash: /a.sh: 沒有那個檔案或目錄
[[email protected]
下面的命令也沒問題:
[[email protected] ~]# su - oracle -c "ls $ORACLE_HOME"
admin Disk3 oraInventory ra_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
[[email protected] ~]#
命令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下的內容
相關推薦
su -c命令與環境變數的困惑
http://bbs.chinaunix.net/thread-2003718-1-1.html [[email protected] ~]# su - oracle [[email protected] ~]$ $ORACLE_HOME/a.s
MinGW安裝與環境變數配置和Sublime Text 3搭建C++編譯環境
一.MinGW在Windows中的安裝與配置:MinGWMinGW(Minimalist GNU For Windows)是個精簡的Windows平臺C/C++、ADA及Fortran編譯器,相比Cyg
WIn10 JDK安裝與環境變數配置以及javac不是內部或外部命令問題的解決
一、安裝JDK 選擇安裝目錄 安裝過程中會出現兩次 安裝提示 。第一次是安裝 jdk ,第二次是安裝 jre 。建議兩個都安裝在同一個java資料夾中的不同資料夾中。1.安裝jdk 隨意選擇目錄 只需把預設安裝目錄 \java 之前的目錄修改即可2.安裝jre→更改→ \ja
df 和 du 命令詳解與環境變數
指令 df 可以顯示目前所有檔案系統的最大可用空間及使用情形,請看下列這個例子: # df -h Filesystem Size Used Avail Capacity Mounted on /dev/ad0s1a 1.9G 389M 1.4G
Windows下JDK的安裝與環境變數的配置教程(附詳細圖解)
JDK安裝配置教程 一、下載jdk 1.首先要確定自己電腦的作業系統是多少位的: 右鍵“我的電腦”>>選擇“屬性”>>系統型別(如下圖,我的是win7 64位) 2.然後到官網下載適合自己電腦版本的jdk。 官網連結:http://www.oracle.
CentOS 管道符、重定向與環境變數
CentOS 管道符、重定向與環境變數 1. 輸入輸出重定向 2. 管道命令符 3. 命令列的萬用字元 4. 常用的轉義字元 5. 重要的環境變數 1. 輸入輸出重定向 檔案讀寫操作有關的重定向
Java詳解(2)--JDK安裝與環境變數配置
JDK安裝與環境變數配置 --------------------- 作者:文動天下 來源:CSDN 連結:https://blog.csdn.net/li_yi_kun?t=1 版權宣告:本文為博主原創文章,轉載請附上博文連結! 1、JDK&nb
普通使用者可以執行,sudo提示command not found的問題分析——修改sudo命令的環境變數
以下所有操作均在Centos6.10上進行 今兒在一臺新虛擬機器上安裝pip之後,用pip安裝包,需要root許可權,但執行sudo pip就提示command not found 經過查閱資料發現,出於安全方面的考慮,使用sudo執行命令將在一個最小化的環境中執行,環境變數都重置成預設狀態
使用setx 命令新增環境變數(Windows)
背景 用GUI的方法可能新增環境變數可能會比較麻煩,為此可採用命令列操作的方式。 步驟 以管理員身份執行 cmd 輸入 setx \M "path" "%path%[new_path];"。其中\M開關表示新增系統變數,由於%path%` 本身是系統變數和使用者變數拼起來的,不能用此方法新增使用者
cl編譯C檔案的環境變數修改
添 加環境 變數INCLUDEC:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt;C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include LIBC:\Progr
[Java配置]JDK安裝與環境變數配置
➤ 安裝 安裝JDK 選擇安裝目錄 安裝過程中會出現兩次 安裝提示 。第一次是安裝 jdk ,第二次是安裝 jre 。建議兩個都安裝在同一個java資料夾中的不同資料夾中。(不能都安裝在java資料夾的根目錄下,jdk和jre安裝在
【Windows】JDK安裝與環境變數配置
【Windows】JDK安裝與環境變數配置 參考: https://www.cnblogs.com/smyhvae/p/3788534.html http://www.cnblogs.com/liuhongfeng/p/4177568.html --------------
2.命令型別 環境變數 快取 時間
1.命令型別: 檢視命令型別 1.shell內建命令 2.外部命令,在某一目錄下有一個和命令相應的可執行程式 command:type+命令名 type history 顯示命令型別,是內建還是外部 2.環境變數: 用於指定作業系統執行環境引數的一些變數PATH
Windows下的Python安裝與環境變數的配置
Windows下的Python安裝與環境變數的配置 第一步:python下載: Python安裝包下載地址:http://www.python.org/ 第二步:python安裝: 雙擊下載
Java基礎(1)JDK的安裝與環境變數配置
最近在複習Java基礎,第一課就是JDK的安裝配置以及環境變數的配置,不多廢話,直接開始吧 (1)去Oracle官方網站下載JDK 1.8 Java的歷史想必大家也清楚,Sun公司開發的一門面向物件的程式語言,後來Sun公司被Oracle收購,於是Java也理所當然的成了Oracle的
管道符、重定向與環境變數
一、重定向 輸入重定向是把檔案匯入到命令中去,輸出重定向是把原本要輸出到螢幕的資料資訊寫入到指定檔案中去。一般,我們使用輸出重定向的頻率更高。 標準輸入重定向 :(STDIN,檔案描述符為0)預設從鍵盤輸入,也可從其他檔案或命令中輸入 標準輸出重
java安裝與環境變數配置
1.開啟360安全瀏覽器,百度搜索JDK下載 2.順序點選進入下載頁面 3.選擇對應的系統進行下載 4.開始下載 5.如圖所示則是安裝包已下載好可以開始安裝JDK了 6.安裝時只需要按照提示一直點選”下一步”直到最後單擊“關閉”就好了,注意:在這個安裝
VSCode的Python擴充套件下程式執行的幾種方式與環境變數管理
在VSCode中編寫Python程式時,由於有些地方要使用環境變數,但是發現設定的環境變數有時不起作用,花了點時間研究了一下,過程不表,直接說結論。 首先,環境變數的設定,Python擴充套件中有三種方式: 直接設定系統環境變數,或在使用命令列啟動VSCode時臨時先設定環境變數。這種方式設定的環境變
JDK安裝與環境變數配置
安裝JDK 選擇安裝目錄 安裝過程中會出現兩次 安裝提示 。第一次是安裝 jdk ,第二次是安裝 jre 。建議兩個都安裝在同一個java資料夾中的不同資料夾中。(不能都安裝在java資料夾的根目錄下,jdk和jre安裝在同一資料夾會出錯) 如下圖所示 1:安
Linux基本知識29:重定向、管道符與環境變數
1 重定向 重定向技術的5中模式: 標準覆蓋輸出重定向。 標準追加輸出重定向。 錯誤覆蓋輸出重定向。 錯誤追加輸出重定向。 輸入重定向。 1.1輸入輸出重定向 (1)輸入重定向是指把檔案匯入到命令中; (2)輸出重定向則是指把原本要輸出到螢幕的資料資訊寫入到