通常,我可以使用此命令将 ~/.bash_profile 文件作为 oracle 源,但是当我为另一个实例创建一个名为 test 的新文件时。
\n#!/bin/bash\n\n# User specific environment and startup programs\n# Oracle Settings\n\n# User specific environment and startup programs\nif ! [[ "$PATH" =~ "$HOME/.local/bin:$HOME/bin:" ]]\nthen\n PATH="$HOME/.local/bin:$HOME/bin:$PATH"\nfi\n#export PATH\n\n# Oracle Settings\n\nexport ORACLE_BASE=/opt/oracle\nexport ORACLE_HOME=/opt/oracle/product/21c/dbhome_1\nexport ORACLE_SID=agile\nexport ORA_INVENTORY=/opt/app/oraInventory\nexport PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch\n\nexport DISPLAY="localhost:10.0"\nexport LC_ALL=C\n\nalias sp='sqlplus / as sysdba'\nalias script='cd /u02/scripts/agile'\nalias software='cd /u02/software'\nalias export='cd /u02/backup/export'\n
Run Code Online (Sandbox Code Playgroud)\n当我在 shell 脚本中获取它并执行它时,它会抛出 cd 错误:参数太多。我试过 。(点)而不是来源。相同的结果。
\n$ source test\n-bash: cd: too many arguments\n-bash: cd: too many arguments\n-bash: cd: too many arguments\n-bash: cd: too many arguments\n-bash: cd: too many arguments\n-bash: cd: too many arguments\n-bash: cd: too many arguments\n-bash: cd: too many arguments\n
Run Code Online (Sandbox Code Playgroud)\n当我给出“test”$ chmod a+x ~/test
并获取它时,我收到字符集错误:
$ ls -ltr test\n-rwxr-xr-x. 1 oracle oinstall 724 Oct 6 14:37 test\n$ souce test\nGLib: Cannot convert message: Could not open converter from \xe2\x80\x9cUTF-8\xe2\x80\x9d to \xe2\x80\x9cAL32UTF8\xe2\x80\x9d\n
Run Code Online (Sandbox Code Playgroud)\n在测试文件上添加了 export CHARSET=AL32UTF8 并获取它,我得到了与开始相同的错误:
\n$ vi test\n$ source test\n-bash: cd: too many arguments\n-bash: cd: too many arguments\n-bash: cd: too many arguments\n-bash: cd: too many arguments\n-bash: cd: too many arguments\n-bash: cd: too many arguments\n-bash: cd: too many arguments\n-bash: cd: too many arguments\n
Run Code Online (Sandbox Code Playgroud)\n即使我获取了主要的资源,但是当从 root 启动 su - oracle 时就可以了。
\n$ source .bash_profile\n-bash: cd: too many arguments\n-bash: cd: too many arguments\n-bash: cd: too many arguments\n-bash: cd: too many arguments\n-bash: cd: too many arguments\n-bash: cd: too many arguments\n-bash: cd: too many arguments\n-bash: cd: too many arguments\n-bash: cd: too many arguments\n-bash: cd: too many arguments\n-bash: cd: too many arguments\n-bash: cd: too many arguments\n-bash: cd: too many arguments\n-bash: cd: too many arguments\n-bash: cd: too many arguments\n-bash: cd: too many arguments\n-bash: cd: too many arguments\n-bash: cd: too many arguments\n-bash: cd: too many arguments\n-bash: cd: too many arguments\n
Run Code Online (Sandbox Code Playgroud)\n以 root 身份获取时不会出现错误
\n[root@ ~]# source ~oracle/test\n
Run Code Online (Sandbox Code Playgroud)\n
ste*_*ver 14
问题几乎肯定是您不幸选择了别名名称export='cd /u02/backup/export'
- 这会覆盖同名的 shell 内置命令。
特别是,如果您在同一个 shell 中第二次获取脚本,则会产生如下表达式:
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=/opt/oracle/product/21c/dbhome_1
Run Code Online (Sandbox Code Playgroud)
变得
cd /u02/backup/export ORACLE_BASE=/opt/oracle
cd /u02/backup/export ORACLE_HOME=/opt/oracle/product/21c/dbhome_1
Run Code Online (Sandbox Code Playgroud)
其中cd
传递了“太多参数”。
当我打开终端时,请参阅 /usr/share/bash-completion/bash-completion 中有些相关的源命令错误