❶ shell命令-e未找到命令
我打算用python來執行shell命令,實現sqoop導數據功能
腳本如下:
mysql_jdbc="jdbc:mysql://{0}:{1}/{2}?characterEncoding=utf8&autoReconnect=true"
sqoop import "-Dorg.apache.sqoop.splitter.allow_text_splitter=true" \
--connect $mysql_jdbc \
--username {3} \
--password {4} \
--table {5} \
--target-dir {7} \
--delete-target-dir \
--split-by clientid
然後報錯:sqoop:未找到命令
然後我就測試:subprocess.run("java -version",shell=True)
也是報錯:java:未找到命令
網上一頓網路,查了2天啊~~~~
1、檢查/etc/profile環境變數設置沒問題
2、linux機器上直接執行java -version也正常
3、linux機器上執行python3後,執行subprocess.run("java -version",shell=True)也正常
我就奇了怪了,還擺不平你這小娘子
後來突然想到之前項目里,先生效一下profile文件,試了一下,果然有效!!!
我的親娘誒,絕望之際,解救了我~~~
至於為什麼一定要這樣,還是不解
正確腳本:
shell_str ="""
source /etc/profile;
java -version
"""
subprocess.run(shell_str, shell=True)
❷ 學習linux時,ls:command not found如何解決
ls命令基本每個linux shell都會存在,因為這是基本的應用命令。就好比,手機接打電話、簡訊內容一樣,這是最基本的,所以不可能是沒有這個命令。
1、你可以先用whereis或者which命令查看一下有沒有這個命令 具體執行
which ls
whereis ls
2、有可能是系統環境變數導致的問題
解決方案:
export
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin